我正在尝试使用标准的Android ToggleButton来呈现某种自定义样式:在未选中状态下,不显示边框/背景填充,在选中状态下,显示背景填充,按下(选中或取消选中)时显示涟漪效应以从一种状态转换到另一种状态。
我已经开始工作了,大部分时间都使用它作为我的ToggleButton的背景:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ripple" android:state_pressed="true"/>
<item android:drawable="@drawable/checked_bg" android:state_checked="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
纹波:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight" >
<item
android:id="@android:id/mask">
<color
android:color="@android:color/white" />
</item>
</ripple>
checked_bg:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid
android:color="?android:attr/colorControlHighlight" />
</shape>
但是,当我从检查状态进入未检查状态时,纹波会对与检查的按钮状态填充颜色不匹配的按钮应用实心填充,因此它会显示为&#34;跳转&#34;立即从一种颜色到下一种颜色。我相信这是因为我使用colorControlHighlight来检查状态背景填充和纹波颜色,因此纹波最终会变成颜色,并从另一个稍微浅一些的颜色开始......
然而,我不能简单地将我检查的状态背景填充更改为这种较浅的颜色,因为当我检查/打开按钮时看起来很奇怪 - 它会以较浅的颜色开始,匹配选中的背景填充,并以较暗的颜色结束,然后立即再次跳转到较浅的颜色。
有没有一个干净的方法来处理这个?或者我在一端遇到颜色变化的跳跃?
或者我可以使用两个不同的涟漪,一个用于press = true和checked = false,另一个用于press = true和checked = true的情况,对吗?