Android 在尺寸不为';不变

Android 在尺寸不为';不变,android,android-layout,viewgroup,Android,Android Layout,Viewgroup,我有一个自定义的视图组,其中包含一些视图 作为对事件的响应,将调用requestLayout,并且在OnLayout中,将显示一些视图 获得一个新的布局位置 其中一个保持其位置,但需要在内部重新排列。但是,由于该视图的布局位置不变,因此不会调用该视图的onlayout方法。在此视图中尝试调用requestLayout、forceLayout或invalidate无效无效无效 我发现的唯一肮脏的伎俩是改变它的一些值位置来强制改变布局,但我认为应该有更好的方法。所以,现在我做了一些(可怕的)事情,比

我有一个自定义的
视图组
,其中包含一些视图

作为对事件的响应,将调用requestLayout,并且在
OnLayout
中,将显示一些视图 获得一个新的布局位置

其中一个保持其位置,但需要在内部重新排列。但是,由于该视图的布局位置不变,因此不会调用该视图的onlayout方法。在此视图中尝试调用
requestLayout
forceLayout
invalidate
无效无效无效

我发现的唯一肮脏的伎俩是改变它的一些值位置来强制改变布局,但我认为应该有更好的方法。所以,现在我做了一些(可怕的)事情,比如:


有没有更好的方法来获得相同的结果?

我终于找到了解决方案:我需要覆盖
onMeasure
并确保在我看来调用
mesure

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    ...
    _myview.measure(widthMeasureSpec, heightMeasureSpec);
    ...
它将在视图的私有字段mPrivateFlags中设置LAYOUT_REQUIRED标志,以便强制调用
OnlLayout

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    ...
    _myview.measure(widthMeasureSpec, heightMeasureSpec);
    ...