Android(MeasureSpec):什么时候可以同时获得高度和宽度作为"MeasureSpec.UNSPECIFIED"



我正在编写自己的布局,扩展ViewGroup类。 您需要覆盖的 meethod 之一是 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"和"UNSPECIFIC"(它们的含义在这里。 具体来说,当我的布局在该特定维度中可以具有所需的任何大小时,父级会传递"未指定"值。 例如,当父级是滚动视图时,会给出此值。

所以我唯一的疑问是:父级有可能同时将它们作为未指定传递给我的布局。 如果可能,在哪些情况下

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

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

最新更新