子view如何在父view之外绘制
2017-10-31 本文已影响0人
_小氓
子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>