gpt4 book ai didi

android - 在 ListView 中修改文本大小时更新项目高度

转载 作者:行者123 更新时间:2023-11-30 03:59:34 25 4
gpt4 key购买 nike

我有一个带有 ArrayAdapterListView,它使用类似于 simple_list_item_1 的 XML 布局来扩充其内容。我在应用程序菜单中有两个选项可以增加/减少文本大小。我通过覆盖 ArrayAdaptergetView 函数设法修改了 ListView 内的 TextViews 的文本大小。像这样:

adapter = new ArrayAdapter<Line>(MyActivity.this, R.layout.line_list, lines){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, fontSizeDp + zoom);
return textView;
}
};
listView.setAdapter(adapter);

菜单选项更改缩放值并调用 adapter.notifyDataSetChanged(); 使适配器更改文本大小。到那时一切正常。

问题是,当我过多地减小文本大小时,每个 TextView 的高度都没有包裹其内容。也就是说,ListView 项目太高了。当我增加文本大小时,项目高度没有问题。

如果我调用 super.getView(position, convertView, parent);当 convertView 为 null 时,我使适配器始终膨胀。在这种情况下,减小文本大小效果很好,因为高度被包裹了。但是,我导致工作重载,我不希望这样。

我尝试使 ListView 和/或 TextView 的布局无效或强制布局,但没有成功。

感谢任何帮助

编辑:这是 line_list 布局:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/lineTextSize"
android:gravity="center"
android:paddingLeft="6dip"
android:paddingRight="6dip" />

lineTextSize 默认为 22dp,大号为 40dp

编辑 2: 看起来像这样 enter image description here

而不是这个屏幕:enter image description here

最佳答案

我找到了 here这是 Android 3.1+ 的已知错误

解决方案是添加这样的字符串

String ZERO_WIDTH_SPACE = "\u200b";

到 TextViews 的文本。因此,适配器的正确 getView 函数是:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, fontSizeDp + zoom);
textView.setText(textView.getText() + ZERO_WIDTH_SPACE);
return textView;
}

关于android - 在 ListView 中修改文本大小时更新项目高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com