如何将布局宽度/高度的值传递给自定义视图类

时间:2016-09-06 06:47:21

标签: android android-layout declare-styleable

我正在创建一个具有扩展线性布局的类(圆形按钮)的模块。它包含图像视图和文本视图。

在XML文件中声明循环视图时,将分配layout_width和layout_height值。我希望imageview尺寸与指定的布局尺寸成比例。因此,如何将布局尺寸传递给视图类,以便我可以将比例尺寸分配给图像视图?

P.S。:这个问题不涉及传递自定义属性。但要处理将android:layout_widthandroid:layout_height传递给自定义UI类的问题。

1 个答案:

答案 0 :(得分:0)

我通过将视图实例传递给需要值的方法来解决这个问题。然后使用getViewTreeObserver().OnGlobalLayoutListener()

public void setIcon(final RoundedButton rb, final int drawableResourceId, final int position){
    mIconPosition = position;

    rb.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            buttonWidth = rb.getWidth();
            buttonHeight = rb.getHeight();

            //whatever needs to be done with the dimensions
        }
    });
}

即使班级扩展了一种视图,你也不能this.getViewTreeObserver().addOnGlobalLayoutListener()