Trong khi làm việc với xml layout android, tôi đã xem qua backgroundTint
thuộc tính. Tôi không hiểu là để làm gì.
Ngoài ra là gì backgroundTintMode
??
Trong khi làm việc với xml layout android, tôi đã xem qua backgroundTint
thuộc tính. Tôi không hiểu là để làm gì.
Ngoài ra là gì backgroundTintMode
??
Câu trả lời:
Tôi đã thử nghiệm các kết hợp khác nhau của android:background
, android:backgroundTint
và android:backgroundTintMode
.
android:backgroundTint
áp dụng bộ lọc màu cho tài nguyên android:background
khi được sử dụng cùng với android:backgroundTintMode
.
Đây là kết quả:
Đây là mã nếu bạn muốn thử nghiệm thêm:
<?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
tính phải được đặt android:backgroundTint
để hiển thị trên TextView
. Trong trường hợp của Button
, tôi đoán rằng nó đã có một số loại nền / màu được thiết lập bởi khuôn khổ.
Các backgroundTint
thuộc tính này sẽ giúp bạn thêm một màu (bóng râm) để nền. Bạn có thể cung cấp một giá trị màu cho cùng một giá trị dưới dạng -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".
Mặt backgroundTintMode
khác sẽ giúp bạn áp dụng màu nền. Nó phải có các giá trị không đổi như src_over, src_in, src_atop,
v.v.
Tham khảo phần này để biết rõ về các giá trị hằng số có thể được sử dụng. Tìm kiếm backgroundTint
thuộc tính và mô tả cùng với các thuộc tính khác nhau sẽ có sẵn.
Tôi sẽ không nhấn mạnh nhiều về sự khác biệt vì nó đã được đề cập, nhưng hãy lưu ý những điều dưới đây:
android:backgroundTint
android:backgroundTintMode
chỉ có ở API 21android:background
và bạn muốn thay đổi màu mặc định của nó, thì bạn có thể sử dụng android:backgroundTint
để thêm bóng râm cho nó.thí dụ
<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" />
Một vi dụ khac
Nếu bạn cố gắng để thay đổi màu sắc giọng của FloatingActionButton
sử dụng android:background
bạn sẽ không nhận thấy một sự thay đổi, đó là bởi vì nó đã được sử dụng app:srcCompat
, vì vậy để làm được điều mà bạn có thể sử dụng android:backgroundTint
thay vì
Chế độ hòa trộn được sử dụng để áp dụng màu nền.
Tô màu để áp dụng cho nền. Phải là một giá trị màu, theo hình thức
#rgb
,#argb
,#rrggbb
, hoặc#aarrggbb
.Đây cũng có thể là tham chiếu đến tài nguyên (ở dạng "@ [package:] type: name") hoặc thuộc tính chủ đề (ở dạng "? [Package:] [type:] name") chứa giá trị thuộc loại này .
android:backgroundTint
mà không cóandroid:background
, TextView thứ hai này không thay đổi bất cứ điều gì. Tuy nhiên, tôi thửandroid:backgroundTint
trong Button, màu của nút trông giống với màu của backgroundTint mà tôi đã đặt. Bạn có thể giải thích những trường hợp này?