声明样式,当我定义项目android:backgroundTint
时,我收到一条警告,从API 21开始,这是可用的,而我指定的最小API较低(API 17)。另一方面,当我用简单backgroundTint
替换它时,警告就消失了。有谁知道为什么会这样?
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:backgroundTint">#0F0</item>
</style>
除此之外,如果我将android:backgroundTint
用于单个组件,例如按钮,则无论我的项目的最小SDK是什么,我都不会收到任何警告或错误。这有点令人费解。
答案 0 :(得分:3)
为什么它在运行时工作:AppCompat支持库反向移植许多后来的API级功能,其样式定义prefix-free backgroundTint
attribute。
lint不抱怨的其他原因:未对android:
加前缀的样式属性未针对已知属性名称进行验证。您实际上可以在item
name
属性中添加任何字符串。例如:
<item name="iJustInventedThis">foo</item>
在布局小部件中,你会得到lint抱怨缺少前缀或未知属性。如果您有一个AppCompat小部件,例如AppCompatImageView
,那么您可以使用backgroundTint
属性。
答案 1 :(得分:1)
我知道这是一个古老的问题,但是如果您遵循this solution指示我们将x = tf.Variable(tf.zeros([2, 2]))
mask = tf.constant([[1, 0], [0, 1]], dtype=x.dtype)
x = mask * x + tf.stop_gradient((1 - mask) * x)
更改为android:backgroundTint
,则会摆脱以下警告:
backgroundTint属性仅在API级别21和更高版本中使用