如何将一个孩子的textview的宽度设置为与另一个孩子的textview完全相同?

时间:2018-07-30 12:58:17

标签: android textview android-custom-view android-measure

我做了一些自定义视图,现在陷入了一个特定的问题。 现在,请尝试解释一下:在我的情况下,视图层次结构是

0

根据来自服务器的数据添加子项。 我想使所有textview具有相同的宽度-内容长度最大的textview的宽度。我该如何实施?我尝试在onMeasure回调中计算宽度,然后将宽度设置为另一个视图,但是getMeasuredWidth()和getWidth()每次都返回0。我听说过有关ViewTreeObserver的信息,但我不明白如何正确使用它。预先感谢!

1 个答案:

答案 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);
    } 
  }
});

tv2tv3tv4的相同代码。它会起作用。