我正在努力使状态列表可绘制,以便用作图像按钮的背景。
我在使用这些PNG文件


我的状态列表选择器是这样的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/play_button_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/play_button_pressed" android:state_focused="true" />
<item android:drawable="@drawable/play_button_normal" />
</selector>图像按钮是这样的:
<ImageButton
android:id="@+id/play_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/play_button_bg"
/>但按钮出现时,它有大的图像和背景,当点击它什么都不会发生。这里有什么问题吗?
发布于 2016-06-30 14:36:16
好的,我成功地使用了一个包含层列表的状态列表选择器来解析它,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item>
<bitmap android:src="@drawable/play_button_pressed" android:gravity="center" />
</item>
</layer-list>
</item>
<item android:state_focused="true">
<layer-list>
<item>
<bitmap android:src="@drawable/play_button_pressed" android:gravity="center" />
</item>
</layer-list>
</item>
<item android:drawable="@drawable/play_button_normal" />
</selector>诀窍就在位图上:android:gravity="center"
发布于 2016-06-30 14:29:50
改为:
<ImageButton
android:id="@+id/play_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="center"
android:src="@drawable/play_button_bg"
android:background="@null"/>默认情况下,背景伸展以适应视图。所以这两个按钮被改变了,最终的外观是完全一样的。
使用作为源,并将它们作为“中心而不缩放”,应该显示两个按钮正在变化(尽管最终的效果可能不是您所期望的那样)。
通常情况下,如果所有的绘图都具有相同的大小,状态图会减少头痛。
发布于 2016-06-30 13:56:09
代码没有问题。因为这两个图像是相同的,所以当我们单击“图像”按钮时,看起来没有什么变化。将一个图像更改为另一个png,比如暂停按钮图像&尝试。还可以使用ImageView代替ImageButton。
https://stackoverflow.com/questions/38124620
复制相似问题