Android: вычисление размера представления внутри MyAdapter :: getView - PullRequest
5 голосов
/ 01 декабря 2011

У меня есть ListView, внутри которого я динамически заполняю элементы списка в методе getView() комбинацией TextView и ImageView.

Мне нужно вычислить размер представления Text и Image внутри getView, поэтому я смогу установить 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);    
  }
  ..
}

Однако, поскольку я нахожусь внутри getView(), значения макета еще не созданы, поэтому я получаю ложные значения для вызова View.getRight().

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 21 ноября 2015

Если вам действительно нужно это сделать, вы можете зарегистрировать onLayoutChangeListener и прослушать изменения параметров макета, таких как левый, правый, верхний и нижний.должен делать это в методе getView.Вы можете сделать textView многострочным или установить android:ellipsize="marquee" в макете textView.Подробнее о выделении: Текст выделения в Android

...