【问题标题】:How to add a gradient to buttons in android through xml?如何通过xml为android中的按钮添加渐变?
【发布时间】:2012-08-23 09:24:19
【问题描述】:

我不知道为什么这段代码不起作用。任何人都可以帮忙吗?我试图让按钮使用名为“greenstart”和“greenend”的自定义颜色。颜色已在 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>

【问题讨论】:

    标签: android xml user-interface button colors


    【解决方案1】:

    创建一个新的xml文件并将其放入drawable中,然后将其作为背景添加到按钮中

    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" >
    

    【讨论】:

    • 如何将其称为按钮背景? "android:background="@?"
    • 请注意,&lt;shape&gt; 不是必需的。我在创建 &lt;gradient&gt; 时得到了相同的结果,但它周围没有任何 &lt;shape&gt;
    【解决方案2】:

    试试这个:

    <?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>
    

    【讨论】:

      【解决方案3】:

      所以我们在这里使用渐变。如上所述@Dusean Singh 说。如果您将使用角度 270,那么您的渐变将从上到下开始:顶部 -> 中心 -> 底部

      <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>
      

      如果您将使用 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>
      

      我们来看看效果。以及如何在按钮上应用相同的

      <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>
      

      【讨论】:

        【解决方案4】:

        创建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>
        

        【讨论】:

          猜你喜欢
          • 2019-02-14
          • 2020-04-11
          • 1970-01-01
          • 2022-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-02
          • 1970-01-01
          相关资源
          最近更新 更多