web-dev-qa-db-ja.com

Android xmlでボタンにグラデーションを追加する方法は?

このコードが機能しない理由を理解できません。誰か助けてもらえますか? 「グリーンスタート」と「グリーンエンド」というタイトルのカスタムカラーを使用するボタンを取得しようとしています。色はres/value/string.xmlファイルに作成されています。私は同様の質問を検討しましたが、それらは未回答のままであるか、不明であるか、解決策が機能しませんでした。前もって感謝します。

XMLファイルのサンプル:

<Button
   Android:id="@+id/mycollection"
   Android:layout_width="match_parent"
   Android:layout_height="fill_parent"
   Android:layout_weight="1" >

   <Gradient
      Android:angle="270"
      Android:endColor="@color/greenstart"
      Android:startColor="@color/greenend" >
   </Gradient>
</Button>
18
Jeremy Quick

新しいxmlファイルを作成し、それをドローアブルに配置して、ボタンとして背景に追加します

gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
    <!--  Gradient Bg for listrow -->
   <gradient
      Android:startColor="#f1f1f2"
      Android:centerColor="#e7e7e8"
      Android:endColor="#cfcfcf"
      Android:angle="270" />
</shape>

layout.xml

 <Button
    Android:id="@+id/Button01"
    Android:layout_width="wrap_content"
    Android:layout_height="fill_parent"
    Android:layout_weight="1"
    Android:background="@drawable/gradient"
    Android:text="Übernehmen" >
70
Dusean Singh

これを試して :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" >
        <shape>
            <solid
                Android:color="#70c656" />
            <stroke
                Android:width="1dp"
                Android:color="#53933f" />
            <corners
                Android:radius="3dp" />
            <padding
                Android:left="10dp"
                Android:top="10dp"
                Android:right="10dp"
                Android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                Android:startColor="#70c656"
                Android:endColor="#53933f"
                Android:angle="270" />
            <stroke
                Android:width="1dp"
                Android:color="#53933f" />
            <corners
                Android:radius="4dp" />
            <padding
                Android:left="10dp"
                Android:top="10dp"
                Android:right="10dp"
                Android:bottom="10dp" />
        </shape>
    </item>
</selector>
15
TrizZz

ここでは、グラデーションについて説明します。上記のように@Dusean Singhは言った。角度270を使用する場合、グラデーションは上から下に始まります:TOP-> Center-> bottom

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <gradient
        Android:startColor="#FF0000"
        Android:centerColor="#00FF00"
        Android:endColor="#0000FF"
        Android:angle="270" />
</shape>

enter image description here

角度360を使用する場合、グラデーションは左から右に始まります:左->中央->右

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <!--  Gradient Bg for listrow -->
    <gradient
        Android:startColor="#FF0000"
        Android:centerColor="#00FF00"
        Android:endColor="#0000FF"
        Android:angle="360" />
</shape>

enter image description here

ここでは、効果について説明します。とボタンに同じを適用する方法

<LinearLayout
    Android:id="@+id/design_bottom_sheet"
    Android:layout_alignParentBottom="true"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal"
    Android:weightSum="2">
    <Button
        Android:drawableLeft="@drawable/ic_grid"
        Android:layout_width="match_parent"
        Android:text="Find"
        Android:background="@drawable/gradient_button"
        Android:textColor="@color/white"
        Android:textAllCaps="false"
        Android:layout_height="wrap_content"
        Android:layout_weight="1" />
    <Button
        Android:drawableLeft="@drawable/ic_card"
        Android:layout_width="match_parent"
        Android:textColor="@color/white"
        Android:text="Match"
        Android:background="@drawable/gradient_button"
        Android:textAllCaps="false"
        Android:layout_height="wrap_content"
        Android:layout_weight="1" />
</LinearLayout>

enter image description here

5
Sufiyan Ansari

作成gradient.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle" >

    <gradient
      Android:angle="270"
      Android:endColor="@color/greenstart"
      Android:startColor="@color/greenend" />

</shape>
4
slybloty