Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Center CheckBox drawable within itself

I have a CheckBox that I want centered within its own boundaries, not pushed to the side. Probably easier demonstrated than explained:

enter image description here

Note that it isn't centered. Currently defined as:

<CheckBox     android:id="@+id/checkbox_star"     android:layout_width="wrap_content"     android:layout_height="match_parent"     android:button="@drawable/btn_favorite"      android:layout_gravity="center"     android:minWidth="48dp" /> 

Nevermind the custom button drawable. It behaves the same with a vanilla CheckBox as well (the small check box behaves the same).

like image 889
davidcesarino Avatar asked Nov 16 '12 05:11

davidcesarino


2 Answers

I believe the problem is that the Checkbox widget uses a regular TextView with the drawableLeft attribute, because it expects text to be shown as well. (This is why you see it centered vertically, but offset slightly to the left.)

If you simply want an image button with multiple states, I suggest using a ToggleButton with your custom images in a state list selector. Or you could create a custom class that extends ImageView and implements Checkable.

like image 130
Sam Avatar answered Sep 18 '22 12:09

Sam


I'm using MaterialCheckBox from material-components-android(or AppCompatCheckBox. They're similar).

I find that if a CheckBox doesn't have any text, setting its android:minWidth="0dp" and android:minHeight="0dp" can remove all paddings and center the drawable.

like image 23
Dewey Reed Avatar answered Sep 16 '22 12:09

Dewey Reed