在使用 android 布局 xml 时,我遇到了 backgroundTint属性,我不知道它是用来做什么的。
backgroundTint
还有什么是 backgroundTintMode? ?
backgroundTintMode
backgroundTint属性将帮助您为背景添加色调(阴影)。您可以以 -"#rgb", "#argb", "#rrggbb", or "#aarrggbb".的形式提供相同颜色的值
"#rgb", "#argb", "#rrggbb", or "#aarrggbb".
另一方面,backgroundTintMode将帮助您应用背景色调。它必须具有像 src_over, src_in, src_atop,这样的常量值。
src_over, src_in, src_atop,
参考 这个以获得可以使用的常数值的清晰概念。可以搜索 backgroundTint属性和描述以及各种属性。
背景色作为颜色过滤器。
尝试通过注释 tint/behind 查看差异,并在两者都设置时检查输出。
返回文章页面返回文章页面返回文章页面 android:
用于应用背景色彩的混合模式。
背景色调
要应用于背景的色彩。必须是颜色值,以 #rgb、 #argb、 #rrggbb或 #aarrggbb的形式。 这也可能是对资源的引用(在表单中) “@[ package: ] type: name”)或主题属性(表单中的 “ ? [ package: ][ type: ] name”)包含此类型的值。
要应用于背景的色彩。必须是颜色值,以 #rgb、 #argb、 #rrggbb或 #aarrggbb的形式。
#rgb
#argb
#rrggbb
#aarrggbb
这也可能是对资源的引用(在表单中) “@[ package: ] type: name”)或主题属性(表单中的 “ ? [ package: ][ type: ] name”)包含此类型的值。
我测试了各种 android:background,android:backgroundTint和 android:backgroundTintMode的组合。
android:background
android:backgroundTint
android:backgroundTintMode
当与 android:backgroundTintMode一起使用时,android:backgroundTint将颜色过滤器应用于 android:background的资源。
结果如下:
如果你想做进一步的实验,下面是代码:
<?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>
我不会过多强调差异,因为它已经涵盖,但请注意以下内容:
例子
<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" />
另一个例子
如果你试图用 android:background改变 FloatingActionButton的重音颜色,你不会注意到变化,那是因为它已经使用了 app:srcCompat,所以为了做到这一点,你可以使用 android:backgroundTint代替
FloatingActionButton
app:srcCompat