我的ListView
里面有动态填充getView()
方法中的列表项,其中包含TextView
和ImageView
的组合。
我需要计算getView中Text和Image视图的大小,所以如果View太大,我将能够设置visibility=gone
。我想:
public View getView(int position, View convertView, ViewGroup parent) {
..
View listItem=view.findViewById(R.id.listItem);
ImageView imageView=(ImageView)view.findViewById(R.id.myImg);
TextView textView=(TextView)view.findViewById(R.id.mytxt);
if (imageView.getRight()>listItemText.getRight()) {
imageView.setVisibility(View.GONE);
}
if (textView.getRight()>listItemText.getRight()) {
textView.setVisibility(View.GONE);
}
..
}
但是,由于我在getView()
内部,因此尚未创建布局值,因此我得到了View.getRight()
调用的错误值。
任何想法如何做到这一点?
答案 0 :(得分:0)
如果您确实需要这样做,可以注册onLayoutChangeListener
并听取布局参数的更改,例如左,右,上,下。
textView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
// TODO: Take care of visibility here. You can access the parent View by v.getParent() method.
}
});
但你不应该在getView
方法中做这样的事情。您可以使textView多线,或在textView的布局上设置android:ellipsize="marquee"
。更多关于选框:
Marquee text in Android