我有一个ListView
和ArrayAdapter
,它使用类似于simple_list_item_1的XML布局来扩充其内容。我在应用程序菜单中有两个选项可以增加/减少文本大小。我设法通过覆盖ArrayAdapter
的getView
函数来修改ListView
内的TextViews
的文本大小。事情是这样的:在ListView中修改文本大小时更新项目高度
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为空,我使适配器allways充气。在这种情况下,由于高度被包裹,减小文本大小可以正常工作。但是,我造成了工作负担过重,我不想那样做。
我试图无效或强制布局到列表视图和/或文字浏览,但它没有奏效。
任何帮助表示赞赏
编辑:这是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是默认和40dp大型
编辑2 22dp:这个样子
而不是此scre EN:
你能后的'R.layout.line_list'文件? – Luksprog
我编辑了原帖 – IvanRF
我以前测试过你的代码,它的工作原理应该如此,无论我如何修改大小,'TextView'都会包装'TextView'的内容。在我的测试中'fontSizeDp'是常量,像17,我简单地增加/减少了'onOptionsItemSelected'回调中的'zoom'变量,然后在适配器上调用'notifyDataSetChanged'。你如何修改尺寸? – Luksprog