Android InsetDrawable
InsetDrawable
用于把一个 Drawable 嵌入到另外一个 Drawable 的内部,并且在内部留一些间距
这个间距类似于 Drawable 的 android:padding
属性,但 padding 表示的是 Drawable 的内容与 Drawable 本身的边距
而 InsetDrawable 表示的是 两个 Drawable 与容器之间的边距 ,当控件需要的 背景比实际的边框小的时候 ,比较适合使用 InsetDrawable
我们可以使用 InsetDrawable
解决自定义 Dialog 与屏幕之间的一个间距问题
相信做过的朋友都知道,即使我们设置了 layout_margin 的话也是没用的,这个时候就可以用到这个 InsetDrawable
只需为 InsetDrawable
设置一个 insetXxx
设置不同方向的边距,然后为设置为 Dialog 的背景即可
InsetDrawable 属性
属性 | 说明 |
---|---|
android:drawable | 引用的 Drawable,如果为空,必须有一个 Drawable 类型的子节点 |
visible | 设置 Drawable 是否额空间 |
insetLeft insetRight insetTop insetBottm |
设置左右上下的边距 |
使用方式
-
XML中使用
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/test1" android:insetBottom="10dp" android:insetLeft="10dp" android:insetRight="10dp" android:insetTop="10dp" />
-
在 Java 代码中使用
InsetDrawable insetDrawable = new InsetDrawable(getResources() .getDrawable(R.drawable.test1), 10, 10, 10, 10);
范例
-
创建一个 空的 Android 项目
cn.twle.android.InsetDrawable
-
使用 shapeDrawable 画两个圆角矩形,差别只在于颜色
res/drawable/shape_rect.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#DD788A"/> <corners android:radius="5dp"/> <padding android:top="2dp" android:bottom="2dp"/> </shape>
-
定义一个
InsetDrawable
资源res/drawable/inset.xml
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/shape_rect" android:insetBottom="50dp" android:insetLeft="50dp" android:insetRight="50dp" android:insetTop="50dp" />
-
修改
activity_main.xml
添加一个TextView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/img_show" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#FFFFFF" android:gravity="center" android:text="简单教程,简单编程" android:background="@drawable/inset" /> </LinearLayout>