android - 如何在android中使用矢量drawable(svg)作为复选框和单选按钮上的按钮

标签 android checkbox vector radio-button

我正在使用矢量可绘制(svg)文件作为具有自定义设计的复选框和单选按钮。我无法在这些组件上设置按钮。

 <CheckBox android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:button="@drawable/checkbox_button_bg"
           android:checked="true"
           android:padding="@dimen/min_padding"
           android:layout_margin="@dimen/min_margin"
           android:text="Do you need recurring" />

 <RadioButton android:id="@+id/rdbtnNever"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:padding="@dimen/most_min_padding"
              android:button="@drawable/radio_button_bg"
              android:text="Never"/>

可绘制/radio_button_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:drawable="@drawable/radio_btn_select"
    android:state_checked="true"
    android:state_pressed="true" />
<item
    android:drawable="@drawable/radio_btn_select"
    android:state_pressed="true" />
<item
    android:drawable="@drawable/radio_btn_select"
    android:state_checked="true" />
<item
    android:drawable="@drawable/radio_btn_unselect" />
</selector>

这里radio_btn_selectradio_btn_unselect是矢量可绘制的

我已经完成了如下所示的复选框。

checkbox_button_bg.xml

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:drawable="@drawable/checkbox_check"
    android:state_checked="true"
    android:state_pressed="true" />
<item
    android:drawable="@drawable/checkbox_check"
    android:state_pressed="true" />
<item
    android:drawable="@drawable/checkbox_check"
    android:state_checked="true" />
</selector>

这里 checkbox_check 是当我运行程序时可绘制的矢量,引发 xml 膨胀异常,当我删除两个组件中的 android:button 行时,它会消失。所以,我的疑问是,如何在这些组件中使用矢量绘图?

更新

我在应用程序和矢量绘图中添加了以下代码,对于 Imageview src 添加来说完全可以正常工作。在 app:srcCompat="@drawable/mic"的帮助下

 defaultConfig {
    minSdkVersion 15
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
}

最佳答案

如今,CompatCheckbox 上有一个属性 app:buttonCompat,其工作方式与 app:srcCompat 相同。它解决了我的问题,在 Android 4.x 上没有矢量按钮显示为复选框按钮。

关于android - 如何在android中使用矢量drawable(svg)作为复选框和单选按钮上的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087225/

相关文章:

android - 我不明白为什么当我将列表更改为 mutableStateOf 时 Jetpack Compose 不重新组合?

android - RecyclerView scrollToPosition 不触发 scrollListener

javascript - 将 bool 复选框 ng-model 添加到对象 AngularJS

ios - 提醒复选框未在 swift 中第一次选中

ruby-on-rails - Ruby on Rails,带有 3 个复选框的 Submit_tag

c++ - 应该一直使用 boost::ptr_vector 代替 std::vector 吗?

android - 有没有一种简单的方法可以用 ArrayList 填充 Spinner?

安卓 : TextView horizontally scrolling

c++ - 如何在C++程序中使用hbw_malloc库?

c++ - vector 指针和 push_back()