子view如何在父view之外繪制
要想實現這個需求需要3個步驟
- 子View繪制區(qū)域對應的父View中添加android:clipToPadding="false",子View就能具備繪制到對應父View的 padding區(qū)域的能力(clipToPadding:子View的繪制區(qū)域是否在padding里面的,默認為true)
- 子View繪制區(qū)域對應的父View中添加android:clipChildren="false",這樣就能具備子View繪制超出父View所在區(qū)域的能力术吗。(clipChildren:子View的繪制是否超過padding區(qū)域)
- 最后android:translationX或者ndroid:translationY實現子View繪制超出父View區(qū)域。
效果圖
代碼如下
<?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>