1

我正在编写自己的布局,扩展 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”(它们的含义在这里。具体来说,当我的布局可以是它想要的任何大小时,父级会传递“UNSPECIFIED”值那个特定的维度。例如,当父级是 ScrollView 时给出。

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

4

1 回答 1

1

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

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

于 2015-03-16T21:58:38.180 回答