ボタンの背景には、二重のグラデーションが必要です。したがって、各グラデーション部分にそれぞれ 2 つの形状を含むレイヤー リストを使用します。セレクターはこんな感じ。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<layer-list>
<item android:bottom="24dp">
<shape android:shape="rectangle">
<gradient android:startColor="#9ccb37" android:endColor="#64bb3a" android:angle="270" />
<corners android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp" android:topLeftRadius="6dp"
android:topRightRadius="6dp" />
</shape>
</item>
<item android:top="24dp">
<shape android:shape="rectangle">
<gradient android:startColor="#45ac42" android:endColor="#029345" android:angle="270" />
<corners android:bottomRightRadius="6dp" android:bottomLeftRadius="6dp" android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
結果はまさに私たちが望んでいたもので、次のようになります。
私たちのテスト デバイスの中にはHTC Desire HDがあり、ボタンをまっすぐに通る煩わしい白い線があります。他のすべてのデバイス (低い dpi と高い dpi の両方) では、結果は問題ありません。ただし、このデバイスでは、結果は次のようになります。
なぜこのデバイスだけでこのようにレンダリングされるのかは、私には完全に謎です。すべてのポインタを歓迎します!