当我点击它时,我使用以下选择器来更改图像按钮的图像。但这在大多数时候都不起作用。只有几个按钮才有效。不知道原因是什么
mapselector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button Pressed -->
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/mapiconover"/>
</selector>
在按钮中,
我是这样做的,
<ImageButton
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/btnMap" android:layout_centerInParent="true" android:src="@drawable/mapselector"
android:background="@drawable/map" android:scaleType="fitXY"
android:layout_alignParentBottom="true">
</ImageButton>
但点击时静止图像不会改变。
对此有何猜测?
答案 0 :(得分:9)
你在ImageButton xml中创建了这样的东西
使用像这样的按钮图像创建xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/backbutton" />
<item
android:drawable="@drawable/closebutton" />
</selector>
将该xml文件添加为IMageButton的背景
<ImageButton
android:layout_height="50px"
android:layout_width="50px"
android:id="@+id/settings"
android:background="@drawable/settings_button" //setting_button in
the xml file
android:text="Settings"/>
答案 1 :(得分:0)
不确定这是否有效,但您可以尝试将选择器更改为:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Button Pressed -->
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/mapiconover"/>
<item android:drawable="@drawable/map" />
</selector>
您的图片按钮:
<ImageButton
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/btnMap"
android:layout_centerInParent="true"
android:background="@drawable/mapselector"
android:scaleType="fitXY"
android:layout_alignParentBottom="true">
</ImageButton>
答案 2 :(得分:0)
我有同样的问题。对我来说是因为
android:state_xxxx
冲突。它通过阐明启用和按下之间的条件来解决。我使用以下代码来获取印刷机和正常状态之间的不同状态:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="false" >
<shape
android:shape="rectangle">
<gradient android:startColor="#1094ff"
android:endColor="#7eb6e3"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="#505050" />
</shape>
</item>
<item android:state_pressed="true" android:state_enabled="true">
<shape
android:shape="rectangle">
<gradient android:startColor="#0075d4"
android:endColor="#0070cb"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="#ff0000" />
</shape>
</item>
<item android:state_enabled="false" >
<shape
android:shape="rectangle">
<gradient android:startColor="#b9b9b9"
android:endColor="#848484"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="#505050" />
</shape>
</item>
</selector>
此示例对不同状态使用不同的渐变和笔触。您也可以使用可绘制对象来代替。只需在可绘制文件夹中创建一个类似于“ mybutton.xml”的文件。然后像这样设置按钮的background属性:
android:background =“ @ drawable / mybutton”
希望对您有所帮助。