在代码中设置ListView行高

时间:2012-12-04 20:07:10

标签: android listview button height

我的Activity包含基于ListView的{​​{1}}和一个按钮。 当我单击按钮时,我希望行高变大。 我决定在按钮SimpleCursorAdapter上使用TextView高度:

OnClick

但它只更改列表的第一行。

我可以使用TextView tvRow = (TextView) findViewById(R.id.tvRow); tvRow.setHeight(20); 的{​​{1}}方法更改高度:

Adapter

但这不是我需要的功能;我需要按钮getView

如何通过点击按钮更改TextView tvRow = (TextView) view.findViewById(R.id.tvRow); tvRow.setHeight(20); 行高? 甚至可能是一招 谢谢你的时间。

更新

当我将此代码放入OnClick时,一切正常,但ListView中的方法SimpleCursorAdapter

getView

显示的列表只是忽略它,它的行宽保持不变。有什么问题?

更新

BaseAdapter

2 个答案:

答案 0 :(得分:18)

我认为你必须使用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

点击按钮后,您必须更改ListView并通知adapter.notifyDataSetChanged() mRowHeight等更改。对于mRowHeight = LayoutParams.WRAP_CONTENT 的第一个值,您可以设置:

BaseAdapter

<强> UPD:

如果false的方法getView()返回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);

{{1}}

答案 1 :(得分:5)

我做了类似的事情:

@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);或者它不起作用。对我而言,它起作用了,&amp;我有同样的问题。