Während der Arbeit mit dem Android Layout XML stieß ich auf backgroundTint
Attribut. Ich verstehe nicht, wofür.
Auch was ist backgroundTintMode
??
Während der Arbeit mit dem Android Layout XML stieß ich auf backgroundTint
Attribut. Ich verstehe nicht, wofür.
Auch was ist backgroundTintMode
??
Antworten:
Getestet habe ich verschiedene Kombinationen von android:background
, android:backgroundTint
und android:backgroundTintMode
.
android:backgroundTint
Wendet den Farbfilter auf die Ressource an, android:background
wenn er zusammen mit verwendet wird android:backgroundTintMode
.
Hier sind die Ergebnisse:
Hier ist der Code, wenn Sie weiter experimentieren möchten:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:text="Background" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:backgroundTint="#FEFBDE"
android:text="Background tint" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:backgroundTint="#FEFBDE"
android:text="Both together" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:backgroundTint="#FEFBDE"
android:backgroundTintMode="multiply"
android:text="With tint mode" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:text="Without any" />
</LinearLayout>
android:background
Eigenschaft muss festgelegt werden, damit die android:backgroundTint
sichtbar wird TextView
. Im Falle von Button
, vermute ich, dass es bereits eine Art Hintergrund / Farbe hat, die vom Framework festgelegt wird.
Das backgroundTint
Attribut hilft Ihnen, dem Hintergrund einen Farbton hinzuzufügen. Sie können dafür einen Farbwert in Form von - angeben"#rgb", "#argb", "#rrggbb", or "#aarrggbb".
Das backgroundTintMode
hilft Ihnen andererseits, die Hintergrundtönung anzuwenden. Es muss konstante Werte wie src_over, src_in, src_atop,
etc. haben.
Lesen Sie dies , um eine klare Vorstellung von den konstanten Werten zu erhalten, die verwendet werden können. Die Suche nach dem backgroundTint
Attribut und der Beschreibung sowie verschiedene Attribute werden verfügbar sein.
Ich werde nicht viel auf den Unterschied eingehen, da er bereits behandelt wird, aber beachte Folgendes:
android:backgroundTint
android:backgroundTintMode
sind nur bei API 21 verfügbarandroid:background
, und die Standardfarbe ändern möchten, können android:backgroundTint
Sie ihm einen Farbton hinzufügen.Beispiel
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:background="@android:drawable/ic_dialog_email" />
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:background="@android:drawable/ic_dialog_email"
android:backgroundTint="@color/colorAccent" />
Ein anderes Beispiel
Wenn Sie versuchen, die Akzentfarbe der FloatingActionButton
Verwendung zu android:background
ändern, werden Sie keine Änderung bemerken, da dies bereits verwendet app:srcCompat
wird. Um dies zu tun, können Sie android:backgroundTint
stattdessen verwenden
Mischmodus zum Anwenden der Hintergrundfarbe.
Farbton für den Hintergrund. Muss ein Farbwert sein, der in der Form
#rgb
,#argb
,#rrggbb
, oder#aarrggbb
.Dies kann auch ein Verweis auf eine Ressource (in der Form "@ [Paket:] Typ: Name") oder ein Themenattribut (in der Form "? [Paket:] [Typ:] Name") sein, die einen Wert dieses Typs enthält .
android:backgroundTint
ohne verwendenandroid:background
. Ich versuche jedochandroid:backgroundTint
in Button, dass die Farbe der Button der Farbe von backgroundTint entspricht, die ich eingestellt habe. Können Sie diese Fälle erklären?