How do I set the selected state of an image button with xml
A newer solution to the problem would be to use DataBinding
.
- Create a
@BindingAdapter
(somewhere in your code):
@BindingAdapter("is_selected")fun setSelected(view: View, selected: Boolean) { view.isSelected = selected}
- Use
DataBinding
in yourxml
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> </data> <ImageButton android:id="@+id/player_ctrl_btn" is_selected="@{true}" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/opaque" android:gravity="center_horizontal" android:padding="0px" android:src="@drawable/playpause" android:text="Play" /></layout>
IMPORTANT: remember that you need to use DataBinding
here. So you cannot simply call add is_selected="true"
(because it will fail not telling you about it), you need to add is_selected="@{true}"
No need to create BindingAdapter method, just enable DataBidning
and type:
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"><data></data><ImageButton android:id="@+id/player_ctrl_btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/opaque" android:gravity="center_horizontal" android:padding="0px" android:src="@drawable/playpause" android:text="Play" app:selected="@{true}" /></layout>