19

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

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

4

3 回答 3

32

看起来你不能——对不起!

于 2010-02-10T15:18:58.570 回答
10

该问题的较新解决方案是使用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这里使用。所以你不能简单地调用 add is_selected="true"(因为它不会告诉你它会失败),你需要添加is_selected="@{true}"

于 2019-09-11T21:02:23.837 回答
7

无需创建 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>
于 2020-03-14T10:39:02.107 回答