我的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
答案 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;我有同样的问题。