0

ボタンの背景には、二重のグラデーションが必要です。したがって、各グラデーション部分にそれぞれ 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 の両方) では、結果は問題ありません。ただし、このデバイスでは、結果は次のようになります。

奇妙なボタン

なぜこのデバイスだけでこのようにレンダリングされるのかは、私には完全に謎です。すべてのポインタを歓迎します!

4

1 に答える 1

0

うーん、グラデーションに明確な区別を付ける必要がありますか、それともこのような移行グラデーションを行うことができますか

<item>
    <shape>
        <gradient android:angle="270" android:endColor="#2f6699" android:startColor="#449def" />
        <stroke android:width="1dp" android:color="#2f6699" />
        <corners android:radius="4dp" />
        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
    </shape>
</item>
于 2013-09-07T22:00:20.237 に答える