Android:计算MyAdapter :: getView中的视图大小

时间:2011-12-01 08:04:10

标签: android listview layout android-ui

我的ListView里面有动态填充getView()方法中的列表项,其中包含TextViewImageView的组合。

我需要计算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()调用的错误值。

任何想法如何做到这一点?

1 个答案:

答案 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