ViewGroup's clipChildren

当子View的内容超出其layout的位置时,是否会被栽剪掉超出的部分
即子View的内容能否显示在其layout的外部。

源码跟踪:
public void setClipChildren(boolean clipChildren) {
    boolean previousValue = (mGroupFlags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN;
    if (clipChildren != previousValue) {
        setBooleanFlag(FLAG_CLIP_CHILDREN, clipChildren);
        for (int i = 0; i < mChildrenCount; ++i) {
            View child = getChildAt(i);
            if (child.mRenderNode != null) {
                child.mRenderNode.setClipToBounds(clipChildren);
            }
        }
        invalidate(true);
    }
}

public class View implements Drawable.Callback, KeyEvent.Callback,
    AccessibilityEventSource {
    ...
    final RenderNode mRenderNode;
    ....
}

 public boolean setClipToBounds(boolean clipToBounds) {
      return nSetClipToBounds(mNativeRenderNode, clipToBounds);//目前至JNI层
}
工具类:
 public static void disableParentsClip(@NonNull View view) {
    while (view.getParent() != null && view.getParent() instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view.getParent();
        viewGroup.setClipChildren(false);
        viewGroup.setClipToPadding(false);
        view = viewGroup;
    }
}

public static void enableParentsClip(@NonNull View view) {
    while (view.getParent() != null && view.getParent() instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup) view.getParent();
        viewGroup.setClipChildren(true);
        viewGroup.setClipToPadding(true);
        view = viewGroup;
    }
}

来源 Smoke & Mirrors: The Magic Behind Wonderful UI in Android

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 11,976评论 2 21
  • 欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录. 转载请注明出处:http:/...
    passiontim阅读 10,240评论 0 31
  • 第五章 栾氏兄弟 我是目录,记得戳我看连载哟 早上8:56分,李智冉刚查完房回办公室,在门口看到栾心,突然想起子言...
    小炻阅读 4,123评论 15 11
  • 前段时间追完了电视剧《十五年等待候鸟》,说真的,我哭得很惨。当裴尚轩终于明白自己心中所爱的时候,佳人已经病重,两人...
    鹿小漠童鞋阅读 5,865评论 16 31
  • 跟某位长辈聊天,谈及工作。我发现两代人的观念差异非常大。我目前在体制工作,得益于这位长辈,可是我是一只不愿关在笼子...
    经典_cj阅读 968评论 6 3