ในขณะที่ทำงานกับ xml รูปแบบ android ฉันเจอbackgroundTint
แอตทริบิวต์ ฉันไม่เข้าใจว่ามีไว้เพื่ออะไร
ยังคืออะไรbackgroundTintMode
??
ในขณะที่ทำงานกับ xml รูปแบบ android ฉันเจอbackgroundTint
แอตทริบิวต์ ฉันไม่เข้าใจว่ามีไว้เพื่ออะไร
ยังคืออะไรbackgroundTintMode
??
คำตอบ:
ผมทดสอบชุดต่างๆของ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>
android:background
สถานที่ให้บริการจะต้องมีการตั้งค่าสำหรับการมองเห็นได้บนandroid:backgroundTint
TextView
ในกรณีนี้Button
ฉันคาดเดาว่ามันมีพื้นหลัง / สีที่กำหนดโดยกรอบงานแล้ว
backgroundTint
แอตทริบิวต์จะช่วยให้คุณสามารถเพิ่มโทนสี (ร่ม) ไปที่พื้นหลัง คุณสามารถระบุค่าสีสำหรับสิ่งเดียวกันในรูปแบบ -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".
backgroundTintMode
บนมืออื่น ๆ ที่จะช่วยให้คุณใช้สีพื้นหลัง มันต้องมีค่าคงที่เช่นsrc_over, src_in, src_atop,
ฯลฯ
อ้างถึงสิ่งนี้เพื่อรับแนวคิดที่ชัดเจนเกี่ยวกับค่าคงที่ที่สามารถใช้ได้ ค้นหาbackgroundTint
แอตทริบิวต์และคำอธิบายพร้อมกับแอตทริบิวต์ต่างๆ
ฉันจะไม่เครียดกับความแตกต่างมากนักเพราะมันครอบคลุมไปแล้ว แต่สังเกตด้านล่าง:
android:backgroundTint
android:backgroundTintMode
มีให้ที่ API 21 เท่านั้น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
แทนได้
BackgroundTint ทำงานเป็นตัวกรองสี
ลองดูความแตกต่างโดยใช้สีความคิดเห็น / พื้นหลังและตรวจสอบผลลัพธ์เมื่อตั้งค่าทั้งสองอย่างแล้ว
โหมดการผสมใช้เพื่อปรับสีพื้นหลัง
ย้อมสีเพื่อใช้กับพื้นหลัง จะต้องเป็นค่าสีในรูปแบบของ
#rgb
,#argb
, หรือ#rrggbb
#aarrggbb
นอกจากนี้ยังอาจเป็นการอ้างอิงถึงทรัพยากร (ในรูปแบบ "@ [package:] type: name") หรือแอตทริบิวต์ธีม (ในรูปแบบ "? [package:] [type:] name") ที่มีค่าประเภทนี้ .
android:backgroundTint
โดยไม่ใช้android:background
TextView ที่สองนี้จะไม่เปลี่ยนแปลงอะไรเลย อย่างไรก็ตามฉันลองใช้android:backgroundTint
ปุ่มสีของปุ่มดูเหมือนสีพื้นหลังสีเดียวกับที่ฉันตั้งไว้ คุณช่วยอธิบายกรณีเหล่านี้ได้ไหม