我有一个Activity,包含一个基于SimpleCursorAdapter的ListView和一个按钮。当我点击按钮时,我希望行高变得更大。我决定在按钮OnClick上使用OnClick高度
TextView tvRow = (TextView) findViewById(R.id.tvRow);
tvRow.setHeight(20);但它只更改了列表的第一行。
我可以在Adapter的getView方法中更改高度:
TextView tvRow = (TextView) view.findViewById(R.id.tvRow);
tvRow.setHeight(20);但这不是我所需要的功能;我需要在按钮OnClick上这样做。
如何通过点击按钮来改变ListView行的高度?也许还有个窍门:)谢谢你抽出时间。
更新:
当我将这段代码放在SimpleCursorAdapter中时,一切都很好,但是在BaseAdapter中的方法getView中
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = lInflater.inflate(R.layout.itemF, parent, false);
}
...
final LayoutParams params = view.getLayoutParams();
if (params == null) {
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, mRowHeight));
}else {
params.height = mRowHeight; }
return view;显示的列表只是忽略了这一点,其行宽保持不变。怎么啦?
更新:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/cbBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/llRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="5dp" >
<TextView
android:id="@+id/tvName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Наименование фирмы"
android:textAllCaps="true"
android:textSize="14dp" />
<TextView
android:id="@+id/tvAddr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Адрес фирмы"
android:textSize="10dp" />
</LinearLayout>
发布于 2012-12-04 20:21:34
我认为您必须对getView()方法的SimpleCursorAdapter进行修改,如下所示:
final SimpleCursorAdapter adapter = new SimpleCursorAdapter (context, cursor) {
@Override
public View getView (int position, View convertView, ViewGroup parent) {
final View view = super.getView(position, convertView, parent);
final TextView text = (TextView) view.findViewById(R.id.tvRow);
final LayoutParams params = text.getLayoutParams();
if (params != null) {
params.height = mRowHeight;
}
return view;
}
}单击按钮时,必须更改mRowHeight,并将类似于adapter.notifyDataSetChanged()的更改通知ListView。对于mRowHeight的第一个值,可以设置如下:
mRowHeight = LayoutParams.WRAP_CONTENTUPD:
如果方法hasStableIds()的BaseAdapter返回false (默认返回false ),则必须在getView()中应用少量更改(必须手动将LayoutParams设置为View ):
LayoutParams params = view.getLayoutParams();
if (params == null) {
params = new LayoutParams(LayoutParams.MATCH_PARENT, mRowHeight);
} else {
params.height = mRowHeight;
}
view.setLayoutParams(params);发布于 2013-04-15 09:06:43
我做了这样的事:
@Override
public View getView(int position, View convertView,ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(android.R.id.text1);
textView.setHeight(30);
textView.setMinimumHeight(30);
/ * Couleur de votre choix * /
textView . SetTextColor ( Couleur . BLACK );
retourner voir ;
}必须将两个字段都放在textView.setHeight (30);textView.setMinimumHeight (30);否则就不能工作。对我来说,它起了作用&我也遇到了同样的问题。
https://stackoverflow.com/questions/13711018
复制相似问题