当按钮与默认灰色保持不变时,在执行onClick操作之前单击时会突出显示该按钮。我已将按钮的背景更改为红色,现在点击时的高光效果消失了。如何使用新背景再次实现这一目标?我猜我想要的只是一个突出显示的红色或点击时的浅红色。
我在SO上看了一下,发现很多人都说在onclickbuttonhighlight.xml
文件夹中创建一个res/drawable
文件。我在下面这样做了。
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/blue"
android:state_focused="true"
android:state_pressed="true"/>
<item
android:drawable="@color/blue"
android:state_focused="false"
android:state_pressed="true"/>
<item
android:drawable="@color/blue"
android:state_focused="true"
android:state_pressed="false"/>
<item
android:drawable="@color/blue"
android:state_focused="false"
android:state_pressed="false"/>
</selector>
我不太确定要说android:drawable="@color/blue"
的行。我只是用蓝色进行测试。然后在XML文件中,我在按钮下添加了android:background="@drawable/onclickbuttonhighlight"
。点击后我没有看到任何高光效果。
我这样做不正确吗?或者有更好的方法吗? XML或以编程方式工作;我没有偏好。
答案 0 :(得分:3)
对于自定义按钮样式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="IMAGE_FOR_DISABLED_STATE" android:state_enabled="false"/>
<item android:drawable="IMAGE_FOR_PRESSED_STATE" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="IMAGE_FOR_FOCUSED_STATE" android:state_enabled="true" android:state_focused="true"/>
<item android:drawable="IMAGE_FOR_ENABLED_STATE" android:state_enabled="true"/>
</selector>
看到压缩状态和聚焦状态有不同的可绘制(图像)。
如果是默认的android系统,我们有drawables
启用按钮对于焦点状态
表示禁用状态
因此,当我们按下按钮或对焦时,我们会看到蓝色的边框。
现在,当您更改默认背景时,您正在将drawable更改为颜色值,而您没有通过drawable指定其他按钮状态。因此,系统将颜色值本身用于所有状态,并且您看不到任何悬停效果。
因此,如果您希望实现自定义按钮,而不是直接将颜色设置为背景,请将可绘制文件指定为背景,该文件指定所有按钮状态的颜色/可绘制图像,例如按下,聚焦,启用,禁用
答案 1 :(得分:1)
根据我的经验,覆盖按钮样式的一部分可以摆脱所有样式。 我使用http://android-holo-colors.com/并在那里制作按钮样式。