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()调用的错误值.
任何想法如何做到这一点?
如果你确实需要做这样的事情,你可以注册 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 中的选取框文本
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |