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
设置左右上下的边距

使用方式

  1. 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" />
    
  2. 在 Java 代码中使用

    InsetDrawable insetDrawable = new InsetDrawable(getResources()  
            .getDrawable(R.drawable.test1), 10, 10, 10, 10);
    

范例

  1. 创建一个 空的 Android 项目 cn.twle.android.InsetDrawable

  2. 使用 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>
    
  3. 定义一个 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" />
    
  4. 修改 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>
    

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.