我正在编写自己的布局,扩展了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时,这是给定的。
所以我唯一的疑问是:父母可以将我的布局同时传递给我们的同时。如果可能,在哪些情况下?
答案 0 :(得分:1)
您可以创建一个向两个方向滚动的自定义视图。这将(或可能)在高度和宽度上测量UNSPECIFIED
的孩子。嵌套在HorizontalScrollView
中的ScrollView
也可能会导致此行为,但不建议这样做。
通常情况下,这种情况(UNSPECIFIED
)都不会出现。可以不理会它。但是,我发现忽略技术上合法的配置是将来引入奇怪错误的好方法。如果可以,您应该在onMeasure
处理此案例。