如何在棒棒糖前版本的选择器中使用svgs?

时间:2016-06-28 18:38:11

标签: android svg android-vectordrawable

我使用选择器作为复选框它可以工作,但它会导致前棒棒糖版本的问题

<selector xmlns:android="...">
    <item android:state_checked="true"   
        android:drawable="@drawable/checked_icon" />
    <item android:drawable="@drawable/icon" />
</selector>




<CheckBox
 android:button="@drawable/terms_checkbox"/>

它导致resourcNotFoundexception,如何解决问题,有没有解决方案?

致命的例外:主要                                                                       android.view.InflateException:二进制XML文件行#70:错误膨胀类CheckBox

     at dalvik.system.NativeStart.main(Native Method)
                                                                   Caused by: android.content.res.Resources$NotFoundException: File res/drawable/terms_service1.xml from drawable resource ID #0x7f020121
                                                                      at android.content.res.Resources.loadDrawable(Resources.java:2096)
                                                                      at android.content.res.TypedArray.getDrawable(TypedArray.java:601)

                                                                      at android.widget.CompoundButton.<init>(CompoundButton.java:74)
                                                                      at android.widget.CheckBox.<init>(CheckBox.java:68)


Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
                                                                    at android.graphics.drawable.Drawable.createFromXmlInner(Draw

2 个答案:

答案 0 :(得分:0)

试试这个。

    CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
    Drawable d = AppCompatDrawableManager.get().getDrawable(this, R.drawable.terms_checkbox);
    checkBox.setButtonDrawable(d);

答案 1 :(得分:0)

1)在您的build.gradle中:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true 
    }
}

2)在您的应用程序类中:

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

3)使用适用于android:button的app:buttonCompat作为CheckBox 或由Android插入的buttonCompat:在style.xml中按入您的按钮

4)就我而言,我需要添加

android:focusable="true"
android:clickable="true"

我的CheckBox中用于onClick反应的参数。

5)就我而言,我需要使用 在XML布局中使用androidx.appcompat.widget.AppCompatCheckBox而不是CheckBox

article很有帮助。