背景として異なる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:上記の2つの異なるXMLをマテリアルデザインに合わせて調整するにはどうすればよいですか?新しいRippleDrawable
の新しいフォルダー/レイアウトxmlをフォークする必要がありますか?
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に配置する必要があります。