我有一个如下定义的图像按钮。
<ImageButton
android:text="Play"
android:src="@drawable/playpause"
android:background="@drawable/opaque"
android:gravity="center_horizontal"
android:id="@+id/player_ctrl_btn"
android:layout_width="fill_parent"
android:padding="0px"
android:layout_height="wrap_content" />
我想设置要选择的按钮的默认状态。所以在代码中我会说:
playBtn.setSelected(true);
是否可以在xml中执行此操作?
答案 0 :(得分:30)
看起来不像你 - 抱歉!
答案 1 :(得分:3)
对此问题的较新解决方案是使用DataBinding
。
@BindingAdapter
(在代码中的某个位置):@BindingAdapter("is_selected")
fun setSelected(view: View, selected: Boolean) {
view.isSelected = selected
}
DataBinding
中使用xml
<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>
重要提示:请记住,您需要在此处使用DataBinding
。因此,您不能简单地调用添加is_selected="true"
(因为它不会不告诉您),您需要添加is_selected="@{true}"
答案 2 :(得分:2)
无需创建BindingAdapter方法,只需启用DataBidning
并输入:
<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>