如何在兼容模式下使用tint for vector drawable?

时间:2016-09-18 02:41:52

标签: android android-appcompat android-vectordrawable

我正在尝试为使用矢量drawable的ImageButton应用色调:

<android.support.v7.widget.AppCompatImageButton
           android:id="@+id/flashlight_button"
           app:srcCompat="@drawable/ic_flash_off_black_24dp"
           android:tint="@color/icon_states_color"
           />

这将适用于Lollipop +,但会在Kitkat上崩溃。

如何在app compat世界中为Kitkat做ColorList色彩?

3 个答案:

答案 0 :(得分:2)

你可以做到。

但你不能使用@color参考颜色(..lame),否则它只能用于L +

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FFAABB"
    android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zm-6,0C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>

check this link

答案 1 :(得分:0)

嗨,您可以通过编程方式在图像按钮中添加色调,并检查它是否在棒棒糖下方,然后以低于其他方式工作。

根据documentationandroid:backgroundTint的相关方法是setBackgroundTintList(ColorStateList list)

<强>更新

按照此link了解如何创建颜色状态列表资源。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:color="#your_color_here" />
</selector>

然后使用

加载它
setBackgroundTintList(contextInstance.getResources().getColorStateList(R.color.your_xml_name));

其中contextInstanceContext

的实例

使用AppCompart

btnTag.setSupportButtonTintList(ContextCompat.getColorStateList(Activity.this, R.color.colorPrimary));

试试这种方式,希望这会对你有帮助。

答案 2 :(得分:0)

android:tint in vector drawable with work。所以只需要android:布局中应该避免使用色调。