gpt4 book ai didi

android - 在尺寸不变的 subview 中强制 onLayout

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:01 28 4
gpt4 key购买 nike

我有一个自定义 ViewGroup,里面有一些 View 。

为了响应事件,调用 requestLayout 并且在 OnLayout 中一些 View 将获取新的布局位置。

其中一个保持其位置但需要在内部重新排列。但是这个 View 的 onlayout 方法不会被调用,因为它的布局位置没有改变。尝试在此 View 中调用 requestLayoutforceLayoutinvalidate 不起作用。

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

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

有什么方法可以以更好的方式获得相同的结果?

最佳答案

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

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

它将在 View 的私有(private)字段 mPrivateFlags 中设置 LAYOUT_REQUIRED 标志,因此它将强制调用 onLayout

关于android - 在尺寸不变的 subview 中强制 onLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343500/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com