我做了一些自定义视图,现在陷入了一个特定的问题。 现在,请尝试解释一下:在我的情况下,视图层次结构是
0
根据来自服务器的数据添加子项。 我想使所有textview具有相同的宽度-内容长度最大的textview的宽度。我该如何实施?我尝试在onMeasure回调中计算宽度,然后将宽度设置为另一个视图,但是getMeasuredWidth()和getWidth()每次都返回0。我听说过有关ViewTreeObserver的信息,但我不明白如何正确使用它。预先感谢!
答案 0 :(得分:0)
尝试一下
int maxWidth = 0;
....
tv1.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = layout.getMeasuredWidth();
if(width > maxWidth){
maxWidth = width;
// update all textView width with max width.
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
this.layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
});
tv2
,tv3
和tv4
的相同代码。它会起作用。