How to add a gradient to buttons in android through xml?

I cannot figure out why this code will not work. Can anyone help? I am trying to get the button to use a custom color titled ‘greenstart’ and ‘greenend’. The colors have been created in the res/value/string.xml file. I have looked at similar questions but either they were left unanswered, unclear, or the solution did not work. Thanks in advance.

XML FILE SAMPLE:

  • listFiles() returns null on Android 6.0 emulator
  • android app crashes without any exception, when trying to sign in with google plus
  • How to have Image and Text Center within a Button
  • How to determine if Android Application is started with JUnit testing instrumentation?
  • Android Gradle: What is javaMaxHeapSize “4g”?
  • Set custom font for Android fragments
  • <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>
    

    ERROR LOG:

    08-28 21:47:20.574: E/AndroidRuntime(761): FATAL EXCEPTION: main
    08-28 21:47:20.574: E/AndroidRuntime(761): java.lang.RuntimeException: Unable to start activity ComponentInfo{My.Taste.App/My.Taste.App.MyTasteActivity}: android.view.InflateException: Binary XML file line #50: Error inflating class Gradient
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.os.Handler.dispatchMessage(Handler.java:99)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.os.Looper.loop(Looper.java:137)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at java.lang.reflect.Method.invokeNative(Native Method)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at java.lang.reflect.Method.invoke(Method.java:511)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at dalvik.system.NativeStart.main(Native Method)
    08-28 21:47:20.574: E/AndroidRuntime(761): Caused by: android.view.InflateException: Binary XML file line #50: Error inflating class Gradient
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.Activity.setContentView(Activity.java:1835)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at My.Taste.App.MyTasteActivity.onCreate(MyTasteActivity.java:34)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.Activity.performCreate(Activity.java:4465)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    08-28 21:47:20.574: E/AndroidRuntime(761):  ... 11 more
    08-28 21:47:20.574: E/AndroidRuntime(761): Caused by: java.lang.ClassNotFoundException: android.view.Gradient
    08-28 21:47:20.574: E/AndroidRuntime(761):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.createView(LayoutInflater.java:552)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
    08-28 21:47:20.574: E/AndroidRuntime(761):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
    08-28 21:47:20.574: E/AndroidRuntime(761):  ... 23 more
    

  • How to develop Google App Engine backend using Android Studio
  • Android Testing: UIAutomator vs Espresso
  • ActionBarSherlock - Show overflowed action items as icon + text
  • Android, Scala and Proguard
  • Working example of latest android facebook sdk login
  • How can I store an arraylist of custom objects?
  • 3 Solutions collect form web for “How to add a gradient to buttons in android through xml?”

    Create a new xml file and put it in drawable and then add it to button as background

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

    Try this :

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

    Create 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>
    
    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.