Яка різниця між атрибутами background, backgroundTint, backgroundTintMode в макеті Android xml?


112

Працюючи з андроїд макетом xml, я натрапив на backgroundTintатрибут. Я не розумію, що таке.

Також що є backgroundTintMode??

Відповіді:


90

Я випробував різні комбінації android:background, android:backgroundTintі android:backgroundTintMode.

android:backgroundTintзастосовує кольоровий фільтр до ресурсу, android:backgroundколи використовується разом із android:backgroundTintMode.

Ось результати:

Перевірка відтінків

Ось код, якщо ви хочете експериментувати далі:

<?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>

У вашому другому прикладі TextView мені цікаво, коли ви користуєтеся лише android:backgroundTintбез android:backgroundцього, цей другий TextView нічого не змінює. Однак, я намагаюся android:backgroundTintв кнопці, колір кнопки виглядає як той самий колір backgroundTint, який я встановив. Чи можете ви пояснити ці випадки?
Vinh Nguyen

@VinhNguyen, android:backgroundпотрібно встановити властивість для того, android:backgroundTintщоб його було видно TextView. У разі Button, я здогадуюсь, що він вже має якийсь фон / колір, встановлений рамкою.
Йогеш Умеш Ваїті

13

backgroundTintАтрибут допоможе вам додати відтінок (тінь) на задній план. Можна вказати значення кольору для того ж у вигляді -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".

З backgroundTintModeіншого боку, вам допоможе нанести фоновий відтінок. Він повинен мати постійні значення, як src_over, src_in, src_atop,і т.д.

Зверніться до цього, щоб отримати чітке уявлення про постійні значення, які можна використовувати. Шукати backgroundTintатрибут та опис разом із різними атрибутами буде доступно.


посилання розірвано.
mallaudin

1
Ні це не так. Ви можете перевірити ще раз?
Самрідхі

7

Я не буду наголошувати на різниці, оскільки вона вже охоплена, але зауважте нижче:

  • android:backgroundTint android:backgroundTintMode доступні лише в API 21
  • Якщо у вас є віджет, на якому встановлений фон png / vector android:background, який ви можете встановити , і ви хочете змінити його колір за замовчуванням, тоді ви можете використовувати його, android:backgroundTintщоб додати відтінок.

приклад

<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" />

введіть тут опис зображення

Ще один приклад

Якщо ви спробуєте змінити колір наголосу на FloatingActionButtonвикористанні, android:backgroundви не помітите змін, тому що це вже використовується app:srcCompat, тому для цього ви можете використовувати android:backgroundTintзамість цього


4

BackgroundTint працює як кольоровий фільтр.

FEFBDE як відтінок

37AEE4 як тло

Спробуйте побачити різницю за відтінком / фоном коментарів і перевірте вихід, коли обидва встановлені.


4

android: backgroundTintMode

Режим накладання використовується для нанесення фонового відтінку.

android: backgroundTint

Відтінок для нанесення на фон. Повинно бути значення кольору у вигляді #rgb, #argb, #rrggbbабо #aarrggbb.

Це також може бути посилання на ресурс (у формі "@ [пакет:] тип: ім'я") або атрибут теми (у формі "? [Пакет:] [тип:] ім'я"), що містить значення цього типу .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.