是否可以为我们添加的android: drawablleft图像设置边缘或填充?


当前回答

创建可绘制的resources.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <inset android:drawable="@drawable/small_m" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
    <item>
        <inset android:drawable="@drawable/small_p" android:insetLeft="10dp" android:insetTop="10dp" />
    </item>
</selector>

其他回答

而不是按钮使用LinearLayout与ImageView和TextView里面。在子项目,如ImageView和TextView使用android:duplicateParentState="true"。

重新制作:

<?xml version="1.0" encoding="utf-8"?>
<shape
        xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="40dp"/>

    <solid android:color="@android:color/white"/>

</shape>

to

<layer-list
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item
            android:right="@dimen/_2dp"
            android:left="@dimen/_2dp"
            android:bottom="@dimen/_2dp"
            android:top="@dimen/_2dp"
            >
        <shape
                xmlns:android="http://schemas.android.com/apk/res/android">

            <corners android:radius="40dp"/>

            <solid android:color="@android:color/white"/>

        </shape>
    </item>

</layer-list>

正如cephus提到的android:drawablePadding只会在按钮足够小的情况下在文本和可绘制对象之间强制填充。

当布局较大的按钮时,你可以使用android:drawablePadding和android:paddingLeft和android:paddingRight来强制文本和可绘制的向内朝向按钮的中心。通过分别调整左右填充,你可以对布局进行非常详细的调整。

下面是一个示例按钮,它使用填充物将文本和图标推得比默认情况下更近:

<Button android:text="@string/button_label" 
    android:id="@+id/buttonId"
    android:layout_width="160dip"
    android:layout_height="60dip"
    android:layout_gravity="center"
    android:textSize="13dip"
    android:drawableLeft="@drawable/button_icon"
    android:drawablePadding="2dip"
    android:paddingLeft="30dip"
    android:paddingRight="26dip"
    android:singleLine="true"
    android:gravity="center" />  

尝试使用负填充

如:

android:paddingLeft="-8dp"

@Bhargav Thanki表示:

android:drawablePadding是最简单的填充方法 可绘制图标,但你不能给特定的一侧填充像 可绘制图标的右或左填充。为了实现这个目标 必须深入调查。如果你应用左填充或右填充 到EditText,然后它将放置填充到整个EditText 与可绘制的图标。

例子:

    <TextView 
        android:layout_width="match_parent"
        android:padding="5dp"
        android:id="@+id/date"
        android:gravity="center|start"
        android:drawableEnd="@drawable/ic_calendar"
        android:background="@drawable/edit_background"
        android:hint="Not Selected"
        android:drawablePadding="10dp"
        android:paddingStart="10dp"
        android:paddingEnd="10dp"
        android:textColor="@color/black"
        android:layout_height="wrap_content"/>