Lui*_*uis 6 android android-layout viewgroup
我有一个自定义ViewGroup内部的一些视图.
响应事件,调用requestLayout并在OnLayout某些视图中获得新的布局位置.
其中一个保持其位置,但需要在内部重新排列.但是,由于布局位置不会改变,因此不会调用此视图的onlayout方法.试图打电话requestLayout,forceLayout或invalidate在此视图中不起作用.
我发现的唯一脏技巧是改变它的一些值位置以强制布局改变,但我认为应该有更好的方法.所以,到现在为止我做了一些事情(可怕的):
int patch = 0;
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) {
...
_myView.patchedLayout(patch);
_myview.layout(l1, t1 , r1, t1+patch);
patch = (patch+1) % 2;
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法以更好的方式获得相同的结果?
我终于得到了解决方案:我需要重写onMeasure并确保mesure在我的视图中调用:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
...
_myview.measure(widthMeasureSpec, heightMeasureSpec);
...
Run Code Online (Sandbox Code Playgroud)
它将在视图的私有字段 mPrivateFlags 中设置 LAYOUT_REQUIRED 标志,以便强制调用onLayout
| 归档时间: |
|
| 查看次数: |
3862 次 |
| 最近记录: |