androidandroid-appcompat

How to add button tint programmatically


In the new AppCompat library, we can tint the button this way:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/follow"
    android:id="@+id/button_follow"
    android:backgroundTint="@color/blue_100"
    />

How can I set the tint of the button programmatically in my code? I'm basically trying to implement a conditional coloring of the button based on some user input.


Solution

  • According to the documentation the related method to android:backgroundTint is setBackgroundTintList(ColorStateList list)

    Update

    Follow this link to know how create a Color State List Resource.

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:color="#your_color_here" />
    </selector>
    

    then load it using

    setBackgroundTintList(contextInstance.getResources().getColorStateList(R.color.your_xml_name));
    

    where contextInstance is an instance of a Context


    using AppCompart

    btnTag.setSupportButtonTintList(ContextCompat.getColorStateList(Activity.this, R.color.colorPrimary));