Apply backgroundTint to background drawable for API 19 Apply backgroundTint to background drawable for API 19 android android

Apply backgroundTint to background drawable for API 19


This worked for me on API19 device, support lib v7

layout

<Button    android:id="@id/btn"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/label"    style="@style/Button"    />

styles

<style name="Button" parent="Base.TextAppearance.AppCompat.Button" >    <item name="backgroundTint">@color/fab_bg</item></style>


I know its little bit old question but you don't need to create a style element even.

Just use AppCompatButton from the support library with app: namespace.

<android.support.v7.widget.AppCompatButton android:layout_width="40dp"                    android:layout_height="40dp"                    android:id="@+id/AbResetBtn"                    android:background="@android:drawable/stat_notify_sync"                    app:backgroundTint="@color/button_material_light" />


You need to use android support library 22.1+ to use AppCompatButton http://android-developers.blogspot.se/2015/04/android-support-library-221.html

But unfortunately you will not be able to do this in the xml.

In the onCreate of your activity, to the following:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        AppCompatButton v = (AppCompatButton) findViewById(R.id.mybutton);        ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{0xffffcc00});        v.setSupportBackgroundTintList(csl);    }}

More info here: Lollipop's backgroundTint has no effect on a Button

Tip: maybe you will be able to do everything in the xml using app:backgroundTint="@color/button_material_light", but I didn't tested.

--EDIT--

Check @ema3272 second comment for the full solution