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);
...