子view如何在父view之外绘制

子view如何在父view之外绘制

要想实现这个需求需要3个步骤

  • 子View绘制区域对应的父View中添加android:clipToPadding="false",子View就能具备绘制到对应父View的 padding区域的能力(clipToPadding:子View的绘制区域是否在padding里面的,默认为true)
  • 子View绘制区域对应的父View中添加android:clipChildren="false",这样就能具备子View绘制超出父View所在区域的能力。(clipChildren:子View的绘制是否超过padding区域)
  • 最后android:translationX或者ndroid:translationY实现子View绘制超出父View区域。

效果图

image

代码如下

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:background="#3fea1010"
    android:clipChildren="false">

    <FrameLayout
        android:clipChildren="false"
        android:clipToPadding="false"
        tools:background="#5fe453c7"
        android:padding="20dp"
        android:layout_gravity="center"
        android:layout_width="330dp"
        android:layout_height="400dp">
        <FrameLayout
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:clipToPadding="false"
            android:padding="10dp"
            tools:background="#58f4dc">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="130dp"
                android:layout_gravity="center"
                android:scaleType="centerCrop"
                android:src="@drawable/ic_placeholder_2"
                android:translationY="-150dp"/>

        </FrameLayout>

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

推荐阅读更多精彩内容