选择器不适用于 ImageButton - Android
Selector don't work on ImageButton - Android
我想在单击时更改 ImageButton
的背景颜色。所以我正在创建选择器...
button_click.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_normal" />
<item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
</selector>
对于这个选择器,我创建了两个可绘制对象:
button_normal.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/white_transparent" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>
</item>
</selector>
和button_pressed.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFCC00" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>
</item>
</selector>
一切都一样,只是我变了颜色。这是我的 colors.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="gray">#EEEEEE</color>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#1976D2</color>
<color name="accentColor">#009688</color>
<color name="shadow">#1A000000</color>
<color name="text_color">#B6B7B9</color>
<color name="button_clicked">#80000000</color>
<color name="white_transparent">#BFFFFFFF</color>
</resources>
我在 ImageButton
上的 main_screen.xml 文件中使用这个选择器:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_click"
android:padding="@dimen/activity_vertical_margin"
android:clickable="true"
android:id="@+id/btnSinoLoc"
android:src="@drawable/find_sino"
android:layout_margin="@dimen/activity_horizontal_margin"
android:contentDescription="@null"
android:maxHeight="40dp"
android:maxWidth="40dp"
android:adjustViewBounds="true"
android:layout_alignTop="@+id/map"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
但这不起作用...我得到了我想要的 ImageButton
,但是当我按下时,颜色没有改变。那么我缺少什么,或者还有其他方法可以做到这一点?
您还必须为 statePressed false 定义一个项目:
<item android:drawable="@drawable/button_normal" android:state_pressed="false" />
并设置您的 ImageButton 的 src:
android:src="@drawable/button_click"
您描述的选择器 xml 的名称为 button_click.xml,因此您必须在 src 属性中调用它。此外,可绘制对象必须是真正的可绘制对象,而不是两个选择器。所以你可以做一个形状...
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFCC00" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>
我想在单击时更改 ImageButton
的背景颜色。所以我正在创建选择器...
button_click.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_normal" />
<item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
</selector>
对于这个选择器,我创建了两个可绘制对象: button_normal.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/white_transparent" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>
</item>
</selector>
和button_pressed.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFCC00" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>
</item>
</selector>
一切都一样,只是我变了颜色。这是我的 colors.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
<color name="gray">#EEEEEE</color>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#1976D2</color>
<color name="accentColor">#009688</color>
<color name="shadow">#1A000000</color>
<color name="text_color">#B6B7B9</color>
<color name="button_clicked">#80000000</color>
<color name="white_transparent">#BFFFFFFF</color>
</resources>
我在 ImageButton
上的 main_screen.xml 文件中使用这个选择器:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_click"
android:padding="@dimen/activity_vertical_margin"
android:clickable="true"
android:id="@+id/btnSinoLoc"
android:src="@drawable/find_sino"
android:layout_margin="@dimen/activity_horizontal_margin"
android:contentDescription="@null"
android:maxHeight="40dp"
android:maxWidth="40dp"
android:adjustViewBounds="true"
android:layout_alignTop="@+id/map"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
但这不起作用...我得到了我想要的 ImageButton
,但是当我按下时,颜色没有改变。那么我缺少什么,或者还有其他方法可以做到这一点?
您还必须为 statePressed false 定义一个项目:
<item android:drawable="@drawable/button_normal" android:state_pressed="false" />
并设置您的 ImageButton 的 src:
android:src="@drawable/button_click"
您描述的选择器 xml 的名称为 button_click.xml,因此您必须在 src 属性中调用它。此外,可绘制对象必须是真正的可绘制对象,而不是两个选择器。所以你可以做一个形状...
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFCC00" />
<corners android:radius="2dp" />
<stroke android:color="@color/shadow" android:width="1dp" />
</shape>