如何设置state_selected在波纹drawable
如何在android:state_selected
指定android:state_selected
state_selected
我有以下的XML纹波绘制,但背景颜色不显示时,我设置myView.setSelected(true);
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#DDDDDD" > <item android:id="@android:id/mask"> <shape> <solid android:color="@color/black" /> </shape> </item> <item android:state_selected="true"> <shape> <solid android:color="#EEEEEE" /> </shape> </item> <item> <color android:color="#FFFFFF" /> </item> </ripple>
find答案,以防万一别人有同样的问题
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#DDDDDD" > <item> <selector> <item android:state_selected="true"> <color android:color="#EEEEEE" /> </item> <item android:state_activated="true"> <color android:color="#EEEEEE" /> </item> <item> <color android:color="#FFFFFF" /> </item> </selector> </item> </ripple>
要添加到@Sohaib的答案:
@Alanv是正确的,OP不需要面具。 但是,如果你的一个select器状态是透明的,你需要一个掩码它会在这里:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/ripple_color"> <!-- mask here... --> <item android:id="@android:id/mask"> <color android:color="@color/black"/> <!-- any color will do --> </item> <item> <selector> <!-- ... NOT here. --> <item android:state_selected="true"> <color android:color="@color/blue"/> </item> <item android:state_activated="true"> <color android:color="@color/red"/> </item> <item> <color android:color="@color/transparent"/> </item> </selector> </item> </ripple>
我最初在我的select器里面有面具:boom:
将上述答案与以下其他答案结合起来:
纹波的颜色应该是什么,colorPrimary或colorAccent? (材料devise)
给出一个很好的涟漪效应,这也适用于该项目处于选定状态。
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <!-- Ripple mask - applied to all selector states --> <item android:id="@android:id/mask"> <color android:color="#42ffffff" /> </item> <!-- Selected state of item --> <item> <selector> <item android:state_selected="true"> <color android:color="?attr/colorAccent" /> </item> </selector> </item> </ripple>
这在你的drawable-v21文件夹中,对于其他平台,你可以创build一个使用重音颜色的select器:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/accent" android:state_selected="true"/> <item android:drawable="@color/accent" android:state_pressed="true"/> </selector>
我想模仿“材质devise”checkbox的行为,但直到我使用ColorStateList之后才能正确使用它们:
在drawable-v21 / bg_checkbox_ripple.xml中
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/checked_accent_statelist" android:radius="24dp"> </ripple>
在color / checked_accent_statelist.xml中
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="?colorControlHighlight" android:state_checked="false"/> <item android:color="?android:textColorHighlight" android:state_checked="true"/> </selector>
属性“?android:textColorHighlight”是你的口音颜色,但是在涟漪中使用它的正确透明度(我认为是26%)。
另外,还应该为drawable / bg_checkbox_ripple.xml中的API 21设备提供回退
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime"> <item> <shape android:innerRadius="24dp" android:shape="oval"> <solid android:color="@color/checked_accent_statelist"/> </shape> </item> </selector>