Android(MeasureSpec):何时可以获得高度和宽度为" MeasureSpec.UNSPECIFIED"

时间:2014-12-18 05:41:54

标签: android layout android-viewgroup

我正在编写自己的布局,扩展了ViewGroup类。你需要覆盖的其中一个是onMeasure()方法。在此方法中,父视图(将包含我的布局的视图)将传递我的布局可以具有的可用宽度和高度。

@Override
public class MyOwnLayout extends ViewGroup {

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        // Argumens passed by the parent View.
        // Can be both arguments be as MeasureSpec.UNSPECIFIED simultaneously ??
    }

}

这个MeasureSpec参数可以有三种可能的模式:“EXACLY”,“AT_MOST”和“UNSPECIFIED”(它们的含义是here。具体来说,当我的布局可以时,父级传递“UNSPECIFIED”值在特定维度中具有任何大小。例如,当父级是ScrollView时,这是给定的。

所以我唯一的疑问是:父母可以将我的布局同时传递给我们的同时。如果可能,在哪些情况下

1 个答案:

答案 0 :(得分:1)

您可以创建一个向两个方向滚动的自定义视图。这将(或可能)在高度和宽度上测量UNSPECIFIED的孩子。嵌套在HorizontalScrollView中的ScrollView也可能会导致此行为,但不建议这样做。

通常情况下,这种情况(UNSPECIFIED)都不会出现。可以不理会它。但是,我发现忽略技术上合法的配置是将来引入奇怪错误的好方法。如果可以,您应该在onMeasure处理此案例。