首页 > 解决方案 > 笔划和可绘制对象之间的填充

问题描述

我使用 MaterialButtonToggleGroup 创建了选择器按钮。

我想在描边和可绘制之间添加填充。

这就是我得到的: 在此处输入图像描述

这就是我要的:

在此处输入图像描述

正如您在上图中看到的那样,在笔画和可绘制选择器之间有填充。

这是 XML 代码:

<com.google.android.material.button.MaterialButtonToggleGroup
        android:id="@+id/toggleContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible"
        app:checkedButton="@id/btnOutline"
        android:paddingVertical="4dp"
        app:selectionRequired="true"
        app:singleSelection="true">

        <com.google.android.material.button.MaterialButton
            android:id="@+id/btnOutline"
            style="@style/Widget.MaterialComponents.Button.OutlinedButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="@drawable/button_selector"
            android:text="@string/outline"
            android:textSize="15sp"
            android:drawablePadding="2dp"
            android:textAllCaps="false"
            android:textColor="@drawable/selector_color"
            app:strokeColor="@color/selector_btn_toggle" />

        <com.google.android.material.button.MaterialButton
            android:id="@+id/btnMain"
            style="@style/Widget.MaterialComponents.Button.OutlinedButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="@drawable/button_selector"
            android:text="@string/main"
            android:textAllCaps="false"
            android:drawablePadding="2dp"
            android:textSize="15sp"
            android:textColor="@drawable/selector_color"
            app:strokeColor="@color/selector_btn_toggle" />

    </com.google.android.material.button.MaterialButtonToggleGroup>

正如您在代码中看到的那样,我正在使用 android:drawablePadding="2dp",但这不起作用。我正在使用 backgroundTint 来设置可绘制的选择器。

可绘制的 button_selector代码:

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/selector_btn_toggle" android:state_checked="true"/>
</selector>

标签: androidxmlmaterial-design

解决方案


创建一个layer-list,添加 i tem 填充,drawablepPadding适用于复合drawable而不是背景,在下面创建

selected_background.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="#FFFFFF"/>
        </shape>
    </item>
    <item android:top="3dp" android:bottom="3dp" android:right="3dp" android:left="3dp">
        <shape>
            <solid android:color="@color/selector_btn_toggle"/>
        </shape>
    </item>
</layer-list>

然后将其设置为button_selectpr

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/selected_background" android:state_checked="true"/>
</selector>

推荐阅读