我正在使用svg作为app:srcCompat
的图标,可以使用Buttons
来提供它但是当我想将它用作<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_enabled" android:state_enabled="true" />
<item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
</selector>
作为选择器时,应用程序崩溃,设备资源未找到异常api低于21
{{1}}
其中button_enabled和button_disabled都是svg
答案 0 :(得分:3)
我对自己的问题有答案。 在您的活动中,只需添加此静态块
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
答案 1 :(得分:1)
Android中的SVG渲染针对API级别21和+。即从棒棒糖开始。由于崩溃发生在较低版本中,因此您需要的是SVG的向后兼容性。
理想情况下,这里有两种解决方案:
答案 2 :(得分:0)
我建议您按照以下步骤操作: -
第1步:
右键单击drawable文件夹 - &gt;选择新建 - >选择Vaector Assests
第2步:
选择本地文件svg现在选择你的svg图像的路径点击下一步你将在你的drawable文件夹中拥有svg图像
对要在应用程序中使用的svg图像执行相同的操作
现在使用以下代码选择按钮 selector_button.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_check_circle" android:state_pressed="true" />
<item android:drawable="@drawable/ic_build" android:state_focused="true" />
<item android:drawable="@drawable/ic_build" />
</selector>
我导入了两个svg 1st ic_check_circle和第二个ic_build,你可以根据自己的需要进行替换。
在你的imageView中使用以下行
app:srcCompat="@drawable/selector_button"
答案 3 :(得分:0)
在 selector_checkbox.xml
下方使用<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_check_circle" android:state_checked="true" android:state_focused="true" />
<item android:drawable="@drawable/ic_uncheck_circle" android:state_checked="false" android:state_focused="true" />
<item android:drawable="@drawable/ic_uncheck_circle" android:state_checked="false" />
<item android:drawable="@drawable/ic_check_circle" android:state_checked="true" />
</selector>
ic_check_circle 和 ic_uncheck_circle 两者都是从本地文件导入的svg文件,正如我在上面的步骤中已经提到的那样
在你的xml文件中使用下面的CheckBox代码,并将 selector_checkbox.xml 文件作为一个按钮放置,你就完成了
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/appCompatCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/selector_checkbox" />