Android layout xml'deki background, backgroundTint, backgroundTintMode nitelikleri arasındaki fark nedir?


112

Android layout xml ile çalışırken backgroundTintözniteliğe rastladım . Ne için olduğunu anlamıyorum.

Ayrıca nedir backgroundTintMode??

Yanıtlar:


90

Ben birçok test yaptık android:background, android:backgroundTintve android:backgroundTintMode.

android:backgroundTintrenk filtresini ile android:backgroundbirlikte kullanıldığında kaynağına uygular android:backgroundTintMode.

Sonuçlar burada:

Ton Kontrolü

Daha fazla denemek istiyorsanız kod şu şekildedir:

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

İkinci TextView örneğinizde, sadece android:backgroundTintonsuz kullanıldığında merak ediyorum android:background, bu ikinci TextView hiçbir şeyi değiştirmiyor. Ancak, android:backgroundTintDüğmeyi denedim , düğme rengi ayarladığım arka plan tonu rengiyle aynı görünüyor. Bu vakaları açıklayabilir misin?
Vinh Nguyen

@VinhNguyen, android:backgroundözelliği android:backgroundTintgörünür olması için ayarlanmalıdır TextView. Durumda Button, çerçeve tarafından zaten ayarlanmış bir tür arka plan / renge sahip olduğunu tahmin ediyorum.
Yogesh Umesh Vaity

13

backgroundTintÖzniteliği arka plana bir renk tonunu (gölge) eklemek için yardımcı olacaktır. Aynısı için şu şekilde bir renk değeri sağlayabilirsiniz -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".

backgroundTintModeÖte yandan arka plan tonu uygulamak için yardımcı olacaktır. src_over, src_in, src_atop,Vb gibi sabit değerlere sahip olmalıdır .

Bakın bu kullanılabilen sabit değerlerin net bir fikir elde etmek. backgroundTintÖzniteliği ve açıklamayı ve çeşitli öznitelikleri arayın .


bağlantı koptu.
mallaudin

1
Hayır değil. Tekrar kontrol edebilir misin?
Samridhi

7

Zaten kapsandığı için aradaki fark üzerinde fazla durmayacağım, ancak aşağıdakilere dikkat edin:

  • android:backgroundTint android:backgroundTintMode yalnızca API 21'de mevcuttur
  • Tarafından ayarlanmış bir png / vektör çizilebilir arka plana sahip bir widget'ınız varsa android:backgroundve varsayılan rengini değiştirmek istiyorsanız, android:backgroundTintona gölge eklemek için kullanabilirsiniz .

misal

<Button
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:background="@android:drawable/ic_dialog_email" />

görüntü açıklamasını buraya girin

<Button
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:background="@android:drawable/ic_dialog_email"
    android:backgroundTint="@color/colorAccent" />

görüntü açıklamasını buraya girin

Başka bir örnek

Eğer vurgu rengini değiştirmeye çalışırsanız FloatingActionButtonkullanarak android:backgroundzaten kullanır çünkü bir değişiklik, fark etmez sizi app:srcCompatyapmak çok sırayla, kendinizin kullanabileceği android:backgroundTintyerine


4

BackgroundTint, renk filtresi olarak çalışır.

Renk olarak FEFBDE

Arka plan olarak 37AEE4

Farkı yorum tonu / arka planı ile görmeyi deneyin ve her ikisi de ayarlandığında çıktıyı kontrol edin.


4

android: backgroundTintMode

Arka plan renk tonunu uygulamak için kullanılan karıştırma modu.

android: backgroundTint

Arka plana uygulanacak renk tonu. Şeklinde bir renk değeri olmalı #rgb, #argb, #rrggbb, veya #aarrggbb.

Bu ayrıca, bu türden bir değeri içeren bir kaynağa ("@ [paket:] tür: ad" biçiminde) veya tema özniteliğine ("? [Paket:] [tür:] ad" biçiminde) bir başvuru olabilir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.