在android选择器中使用SVG按钮

时间:2017-01-23 08:52:07

标签: android svg

我正在使用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

4 个答案:

答案 0 :(得分:3)

我对自己的问题有答案。 在您的活动中,只需添加此静态块

static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

答案 1 :(得分:1)

Android中的SVG渲染针对API级别21和+。即从棒棒糖开始。由于崩溃发生在较低版本中,因此您需要的是SVG的向后兼容性。

理想情况下,这里有两种解决方案:

  1. 使用 Victor 库,该库支持向后兼容性。可用 [ here ]。另请参阅Android中有关Vector使用情况的详细媒体文章。 [ here ]
  2. 从Android支持库v23.2开始,SVG使用已向后兼容,直到API v 7.详细指南可用[here]。另请参阅此答案。 [here]

答案 2 :(得分:0)

我建议您按照以下步骤操作: -

第1步:

select svg from local folder

右键单击drawable文件夹 - &gt;选择新建 - >选择Vaector Assests

第2步:

click on next

选择本地文件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" />