我正试图通过以下代码创建一个有状态按钮,其顶部是Text和Image:
<Button
android:id="@+id/btnMultiplayer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableTop="@drawable/multiplayer"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="Multiplayer"/>为了得到这个:

然而,当图像被按下时,我无法找到改变顶部可绘图的方法。
我尝试将android:drawableTop设置为@drawable/multiplayer_stateful,其中@drawable/multiplayer_stateful是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawableTop="@drawable/multiplayer" android:state_enabled="true" android:state_window_focused="false"/>
<item android:drawableTop="@drawable/multiplayer_pressed" android:state_pressed="true"/>
</selector>但这不管用。(请注意@drawable/multiplayer和@drawable/multiplayer_pressed是png文件)
有什么建议吗?
发布于 2015-08-28 07:07:19
你必须使用android:dither = "true"
尝尝这个。
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:dither="true" >
<item android:drawableTop="@drawable/multiplayer" android:state_enabled="true" android:state_window_focused="false"/>
<item android:drawableTop="@drawable/multiplayer_pressed" android:state_pressed="true"/>
</selector>来自Android文档:
如果位图与屏幕没有相同的像素配置(例如:具有RGB 565屏幕的ARGB 8888位图),则启用或禁用位图抖动。 必须是布尔值,可以是"true“,也可以是"false”。 这也可能是对包含此类型值的资源(形式为"@package: type :name")或主题属性(形式为"?package:name")的引用。
抖动会影响比设备精度更高的颜色是如何向下采样的.不抖动通常更快,但更高精度的颜色只是被截断(例如8888 -> 565)。抖动试图分发该过程中固有的错误,以减少视觉伪影。
希望能帮上忙!
发布于 2015-08-28 07:02:09
在选择器中启用抖动属性。
android:dither
布尔。如果位图与屏幕没有相同的像素配置(例如:具有RGB 565屏幕的ARGB 8888位图),则启用或禁用位图抖动。有关更多细节,请参阅以下链接:http://developer.android.com/guide/topics/resources/drawable-resource.html
https://stackoverflow.com/questions/32264654
复制相似问题