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

Tom*_*mer 5 layout android listview android-ui

我有一个ListView内部,我动态填充方法中的列表项getView(),与TextView,和一起组合ImageView.

我需要计算getView中Text和Image视图的大小,所以visibility=gone如果View太大,我将能够设置.我是:

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);    
  }
  ..
}
Run Code Online (Sandbox Code Playgroud)

但是因为我在里面getView(),所以还没有创建布局的值,所以我得到了View.getRight()调用的错误值.

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

meh*_*udi 0

如果你确实需要做这样的事情,你可以注册 aonLayoutChangeListener并监听布局参数的变化,比如左、右、上、下。

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.
            }
        });
Run Code Online (Sandbox Code Playgroud)

但你不应该在getView方法中做这样的事情。您可以使 textView 成为多行,或android:ellipsize="marquee"在 textView 的布局上设置。有关选取框的更多信息: Android 中的选取框文本