如何使用xml设置图像按钮的选定状态

时间:2010-02-10 13:58:25

标签: xml android user-interface imagebutton

我有一个如下定义的图像按钮。

<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中执行此操作?

3 个答案:

答案 0 :(得分:30)

看起来不像你 - 抱歉!

答案 1 :(得分:3)

对此问题的较新解决方案是使用DataBinding

  1. 创建一个@BindingAdapter(在代码中的某个位置):
@BindingAdapter("is_selected")
fun setSelected(view: View, selected: Boolean) {
    view.isSelected = selected
}
  1. 在您的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>