我有不同的draw9patch png
按钮作为背景。目前按钮由selector
控制,如下所示:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/disabled" android:state_enabled="false"/>
<item android:drawable="@drawable/focused" android:state_focused="true"/>
<item android:drawable="@drawable/default"/>
</selector>
对于 Android Lollipop ,他们的触控效果为RippleDrawable
,如下所示:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight">
<item>
...
</item>
</ripple>
关于新的触控效果:
1:我可以将draw9patch设置为RippleDrawable
的背景吗?
2:如何容纳以上两种不同的xml我想要遵循材料设计?我是否必须为新的RippleDrawable
?
答案 0 :(得分:78)
1)是的。有关如何合成图层的更多详细信息,请参阅RippleDrawable的文档,但基本上您需要:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:drawable="@drawable/yourninepatch" />
</ripple>
或者还要以干净的方式处理禁用状态,您可能需要:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item>
<selector>
<item android:state_enabled="false">
<nine-patch
android:src="@drawable/yourninepatch"
android:alpha="?android:attr/disabledAlpha" />
</item>
<item>
<nine-patch android:src="@drawable/yourninepatch" />
</item>
</selector>
</item>
</ripple>
2)是的,你应该将你的涟漪XML放在drawable-v21中。