设置复选框的drawable大小

时间:2017-07-05 17:05:26

标签: android checkbox android-drawable android-button android-checkbox

我想使用自定义drawables设置为我的复选框drawable我将其定义如下:

heart_button.xml:

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

这里的drawable只是.png文件。但是在布局中我有以下条目:

    <CheckBox
        android:id="@+id/heartItemCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="4dp"
        android:layout_marginRight="4dp"
        android:button="@drawable/favourite_heart_button"
        android:contentDescription="@string/heartCheckBoxDesc"
        android:focusable="false"/>

我想要实现的是设置CheckBox的宽度和高度,并使其按钮可绘制以填充它。现在它被裁剪(当我使用太大的.png文件时)或保持小(当我使用lower-resoultion .png时)。 我相信引入了dp单位以防止各种项目大小取决于手机密度。这是我不想只使用另一种分辨率的图像。

我已经尝试了几种方法来实现我想要的 - 没有成功。我尝试设置android:scaleType="fitCenter"android:gravity="center",我尝试更改items中的selector,以bitmaps引入android:scaleType="fitCenter"属性android:background。似乎有用的是将drawable设置为android:button属性而不是{{1}}。但我不认为这是正确的方法(它可以使阴影,海拔等方面产生一些问题)。

你如何推荐达到我想要的目标?

1 个答案:

答案 0 :(得分:2)

大多数人首选使用android:background like

android:button="@null"
android:background="@drawable/check_box"

如果您想使用按钮,请将图像大小调整为32dp。因为android Material Design建议使用32dp作为复选框。

请参阅链接。可能它会帮助你。

Material Guidelines