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

Jay*_*ren 17 xml user-interface android 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" />
Run Code Online (Sandbox Code Playgroud)

我想设置要选择的按钮的默认状态.所以在代码中我会说:

playBtn.setSelected(true);

是否可以在xml中执行此操作?

Com*_*are 31

它看起来不像你 - 抱歉!

  • @portfoliobuilder这不是问题所在. (3认同)

Bar*_*ski 9

该问题的更新解决方案是使用DataBinding.

  1. 创建一个@BindingAdapter(在代码中的某处):
@BindingAdapter("is_selected")
fun setSelected(view: View, selected: Boolean) {
    view.isSelected = selected
}
Run Code Online (Sandbox Code Playgroud)
  1. 使用DataBinding您的xml
@BindingAdapter("is_selected")
fun setSelected(view: View, selected: Boolean) {
    view.isSelected = selected
}
Run Code Online (Sandbox Code Playgroud)

重要提示:请记住,您需要在DataBinding此处使用。所以你不能简单地调用 add is_selected="true"(因为它不会告诉你它会失败),你需要添加is_selected="@{true}"


小智 5

无需创建 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>
Run Code Online (Sandbox Code Playgroud)