InsetDrawable

Android view的padding是view的一部分,可以点击,背景色也覆盖padding;

margin则不属于view,不能点击,背景色也不覆盖。

如果想结合二者,让view的主体有背景,边缘没有背景色,同时整个view又可以点击,怎么方便呢?

很简单的不凡是使用InsetDrawable。在insetdrawable中的inset有两个作用

1. 设置padding。可以通过开发工具查看,inset部分确实设置成为padding了。所以gravity啥的,都是不考虑padding这部分的。

2. 设置onDraw的绘制空间。如果以InsetDrawable为背景,那inset部分是不在绘制空间里面的。所以只会绘制android:drawable部分。

此时如果调用View.setPaddingXXX,那个只会修改padding,而没法改变绘制空间。

原文地址:https://www.cnblogs.com/xichengtie/p/5311824.html