我正在使用图标示例设计按钮,并希望在未按下图标时为黑色,按下时变为白色。编码如下:
在布局 xml 中:
<Button
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/icon_new_btn"
android:scaleType="fitXY"
android:id="@+id/newBtn" />
在 icon_new_btn.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:drawableTop="@drawable/icon_new_white"
android:background="@android:color/transparent"/>>
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:drawableTop="@drawable/icon_new"
android:background="@android:color/transparent"/>
</shape>
</item>
</selector>
问题1(似乎使用以下修改解决):
整个按钮在屏幕上变得不可见(它仍然可以在该屏幕位置按下!)。我如何修改上述编码以满足定义的目的?谢谢!!
修改但新的问题(问题2):
以下修改后的布局和选择器似乎解决了上述问题1。但是分辨率变得更差,图标扭曲并且看起来更大。第一个和第二个图标见下面的截图,使用下面的修改代码(图标 3 到 6 只是简单地使用android:drawableTop="@drawable/icon_save"
,没有任何按下效果并显示更高的分辨率):
修改布局
<Button
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:background="@drawable/icon_new_btn"
android:scaleType="fitXY"
android:id="@+id/newBtn" />
修改选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_new_white"
android:state_pressed="true" />
<item android:drawable="@drawable/icon_new" />
</selector>