Zac*_*ach 5 android button rippledrawable android-5.0-lollipop
我正在尝试让标准的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>
Run Code Online (Sandbox Code Playgroud)
波纹:
<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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
但是,当我从选中状态转到未选中状态时,涟漪将实心填充应用于与选中按钮状态填充颜色不匹配的按钮,因此它似乎立即从一种颜色“跳转”到另一种颜色。我相信这是因为我在检查状态背景填充和波纹颜色上都使用了colorControlHighlight,因此波纹最终以该颜色开始,并以另一种稍微浅一点的颜色开始...
但是,我不能简单地将选中状态的背景填充更改为这种较浅的颜色,因为这会使我检查/打开按钮时看起来很奇怪-它会以较浅的颜色开始,与选中的背景填充相匹配,然后变成较深的颜色,然后立即再次跳至较浅的颜色。
有没有一种干净的方法来解决这个问题?还是我一端卡住了颜色变化?
或者,我可以使用两种不同的纹波,一种用于按下= true和checked = false,另一种用于按下= true和checked = true的情况,对吗?
| 归档时间: |
|
| 查看次数: |
1058 次 |
| 最近记录: |