Die schlechten Nachrichten
Wie BoD sagt, ist es bedeutungslos, den Hintergrund eines Buttons in Lollipop 5.0 (API-Level 21) zu tönen.
Die guten Nachrichten
Lollipop 5.1 (API-Level 22) scheint dies behoben zu haben, indem btn_mtrl_default_shape.xml (unter anderem) geändert wurde: https://android.googlesource.com/platform/frameworks/base/+/6dfa60f33ca6018959ebff1efde82db7d2aed1e3%5E !
Die gute Nachricht
Die neue Support-Bibliothek (Version 22.1+) bietet vielen Komponenten, einschließlich AppCompatButton, abwärtskompatible Unterstützung für das Abtönen !
Leider android:backgroundTint
funktioniert die Eigenschaft immer noch nicht (vielleicht mache ich etwas falsch) - also müssen Sie den ColorStateList
In-Code mit einstellen setSupportBackgroundTintList()
. Es wäre wirklich schön, wenn wir android:backgroundTint
in Zukunft Unterstützung sehen würden . Update : Marcio Granzotto hat kommentiert, dass es app:backgroundTint
auf AppCompatButton funktioniert! Beachten Sie app:
, dass dies nicht android:
der Fall ist, da es sich in der App / Bibliothek befindet.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<AppCompatButton
android:id="@+id/mybutton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Testing, testing"
app:backgroundTint="#ff00ff"/>
</LinearLayout>
Ihre Aktivität wird automatisch eine AppCompatButton
anstelle der normalen aufblasen, Button
wenn Sie es von erben lassen AppCompatActivity
.
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);
}
}
Sie sollten das natürlich ColorStateList
von einer Farbressource bekommen, aber ich war faul, also ...
Oh, und vergessen Sie nicht, Ihr App-Thema auf eines der Theme.AppCompat
Themen zu stützen, sonst werden die kompatiblen Ansichten sehr, sehr traurig sein ...;)
Dies funktionierte sowohl bei 2.3.7 (Lebkuchen MR1) als auch bei 5.0 (Lollipop 'Classic').