En travaillant avec la mise en page Android xml, je suis tombé sur l' backgroundTint
attribut. Je ne comprends pas à quoi ça sert.
Aussi qu'est-ce que c'est backgroundTintMode
??
En travaillant avec la mise en page Android xml, je suis tombé sur l' backgroundTint
attribut. Je ne comprends pas à quoi ça sert.
Aussi qu'est-ce que c'est backgroundTintMode
??
Réponses:
J'ai testé différentes combinaisons de android:background
, android:backgroundTint
et android:backgroundTintMode
.
android:backgroundTint
applique le filtre de couleur à la ressource de android:background
lorsqu'il est utilisé avecandroid:backgroundTintMode
.
Voici les résultats:
Voici le code si vous souhaitez expérimenter davantage:
<?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
propriété doit être définie pour que le android:backgroundTint
soit visible sur TextView
. Dans le cas du Button
, je suppose qu'il a déjà une sorte d'arrière-plan / couleur définie par le cadre.
L' backgroundTint
attribut vous aidera à ajouter une teinte (nuance) à l'arrière-plan. Vous pouvez fournir une valeur de couleur pour le même sous la forme de -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".
Le backgroundTintMode
, d'autre part, vous aidera à appliquer la teinte de fond. Il doit avoir des valeurs constantes comme src_over, src_in, src_atop,
etc.
Reportez - vous à ceci pour avoir une idée claire des valeurs constantes qui peuvent être utilisées. La recherche de l' backgroundTint
attribut et la description ainsi que divers attributs seront disponibles.
Je n'insisterai pas beaucoup sur la différence car elle est déjà couverte, mais notez ce qui suit:
android:backgroundTint
android:backgroundTintMode
sont uniquement disponibles à l'API 21android:background
et que vous souhaitez changer sa couleur par défaut, vous pouvez l'utiliser android:backgroundTint
pour lui ajouter une nuance.exemple
<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" />
Un autre exemple
Si vous essayez de changer la couleur d'accentuation de l' FloatingActionButton
utilisation, android:background
vous ne remarquerez pas de changement, c'est parce qu'il est déjà utilisé app:srcCompat
, donc pour ce faire, vous pouvez utiliser à la android:backgroundTint
place
Mode de fusion utilisé pour appliquer la teinte d'arrière-plan.
Teinte à appliquer à l'arrière-plan. Doit être une valeur de couleur, sous la forme de
#rgb
,#argb
,#rrggbb
ou#aarrggbb
.Cela peut aussi être une référence à une ressource (sous la forme "@ [package:] type: nom") ou à un attribut de thème (sous la forme "? [Package:] [type:] nom") contenant une valeur de ce type .
android:backgroundTint
sansandroid:background
, ce deuxième TextView ne change rien. Cependant, j'essaieandroid:backgroundTint
dans Button, la couleur du bouton ressemble à la même couleur de backgroundTint que j'ai définie. Pouvez-vous expliquer ces cas?