Reputation: 752
I would like to use custom drawables set as my checkbox drawable I have it defined as follows:
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>
drawables here are just .png files. In layout however I have a following entry:
<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"/>
What I want to achieve is to set width and height of that CheckBox
and has its button drawable scalled to fill it. Now it get cropped (when I use too big .png file) or stays small (when I use lower-resoultion .png).
I believe dp
units were introduced to prevent various items size depending on phone density. This is way I don't want to just use image with another resolution.
I have tried several ways to achieve what I want - without success. I've tried setting android:scaleType="fitCenter"
, android:gravity="center"
, I tried to change items
in selector
to introduce bitmaps
there with android:scaleType="fitCenter"
attribute. What seemed to work was setting that drawable to android:background
attribute instead of to android:button
. But I don't think this a right way (It can make some probles with shadows, elevation, etc. I think).
How do you recommend to achieve what I want?
Upvotes: 0
Views: 1234
Reputation: 731
Most of the People Preferred to use android:background like
android:button="@null"
android:background="@drawable/check_box"
Still if you like to use button then resize your image to 32dp. Because android Material Design suggested to use 32dp for checkbox.
Refer the link. May be it will help you.
Upvotes: 2