我有像下面的图像按钮。
<ImageButton
android:id="@+id/imagebutton"
android:layout_width="250dp"
android:layout_height="100dp"
android:background="@drawable/perm_group_calendar"/>
perm_group_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/perm_group_calendar_selected" />
<item android:drawable="@drawable/perm_group_calendar_normal" />
</selector>
所选状态本身不起作用。我从这个SO中找到了答案
Android ImageButton with a selected state?
我使用了以下代码。现在它有效。
imageButton.setOnClickListener(new OnClickListener() {
public void onClick(View button) {
if (button.isSelected()){
button.setSelected(false);
//...Handle toggle off
} else {
button.setSelected(true);
//...Handled toggle on
}
}
});
为什么我们要切换选定的状态?
答案 0 :(得分:2)
我认为您应该在可绘制的XML文件中执行以下操作:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/aaaa" />
<item android:state_pressed="true" android:drawable="@drawable/aaaa"></item>
<item android:drawable="@drawable/ic_launcher" />
</selector>
和你的ImageButton如下:
<ImageButton
android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#123456"
android:padding="10dp"
android:scaleType="fitXY"
android:src="@drawable/drawableFile" />
你应该添加android:state_pressed =“true”,这应该是按下状态的技巧。
正如RomianGuy在answer中提到的那样: 当使用键盘/ dpad /轨迹球/等选择项目时,使用state_selected。 所以我认为这就是你必须切换状态的原因。
希望有助于此。
答案 1 :(得分:1)
因为选择的状态不是由ImageButton自动显示的,因此 - 通常(与人工相对) - 仅显示正常和按下< / strong>状态(不确定聚焦状态,但它应该)。
您可以使用自定义 ToggleButton(或Switch或CheckBox)。
无论如何,对我而言,你的解决方案看起来并不那么糟糕。