Android:按钮,后台有Ripple和状态选择器:未找到资源异常
我有一个具有涟漪效果的按钮,希望在按钮启用/禁用时为背景色添加一个状态选择器 state_selector.xml:Android:按钮,后台有Ripple和状态选择器:未找到资源异常,android,android-layout,android-button,rippledrawable,Android,Android Layout,Android Button,Rippledrawable,我有一个具有涟漪效果的按钮,希望在按钮启用/禁用时为背景色添加一个状态选择器 state_selector.xml: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/green" android:state_enabled="true
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/green" android:state_enabled="true"/>
<item android:color="@color/grey" android:state_enabled="false"/>
</selector>
及
有人能帮忙解决这个问题吗?
谢谢,我找到了问题
ripple需要一个可提取的资源
我使用的状态选择器并没有为每个状态提供可绘制的颜色,而是为每个状态提供了一种颜色。就这样,它崩溃了
以下状态选择器的xml将解决此问题。其他一切都是一样的
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/green" android:state_enabled="true"/>
<item android:drawable="@color/grey" android:state_enabled="false"/>
</selector>
我发现了问题
ripple需要一个可提取的资源
我使用的状态选择器并没有为每个状态提供可绘制的颜色,而是为每个状态提供了一种颜色。就这样,它崩溃了
以下状态选择器的xml将解决此问题。其他一切都是一样的
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/green" android:state_enabled="true"/>
<item android:drawable="@color/grey" android:state_enabled="false"/>
</selector>
我认为@Sunny的答案很有效 这个建议可能有些过分,但您也可以像这样将ripple和选择器组合到一个xml文件中。这是一个圆形透明按钮,具有波纹和启用和禁用状态 按钮\u透明\u background.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/white">
<item>
<selector>
<item android:state_enabled="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/white" />
</shape>
</item>
<item android:state_enabled="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/whiteTransparent" />
</shape>
</item>
</selector>
</item>
<item
android:id="@android:id/mask"
android:state_pressed="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/white" />
</shape>
</item>
</ripple>
将其添加到按钮的背景属性或styles.xml
<style name="buttonRound" parent="Base.Widget.AppCompat.Button">
<item name="android:background">@drawable/button_transparent_background</item>
</style>
@可绘制/按钮\u透明\u背景
我认为@Sunny的答案很有效
这个建议可能有些过分,但您也可以像这样将ripple和选择器组合到一个xml文件中。这是一个圆形透明按钮,具有波纹和启用和禁用状态
按钮\u透明\u background.xml
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/white">
<item>
<selector>
<item android:state_enabled="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/white" />
</shape>
</item>
<item android:state_enabled="false">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/transparent" />
<stroke
android:width="1dp"
android:color="@color/whiteTransparent" />
</shape>
</item>
</selector>
</item>
<item
android:id="@android:id/mask"
android:state_pressed="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="100dp" />
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/white" />
</shape>
</item>
</ripple>
将其添加到按钮的背景属性或styles.xml
<style name="buttonRound" parent="Base.Widget.AppCompat.Button">
<item name="android:background">@drawable/button_transparent_background</item>
</style>
@可绘制/按钮\u透明\u背景
min sdk是什么?23。Ripple是受支持的你的min sdk是什么?23。Ripple受支持感谢您的详细回答!最后是一个有效的版本。选择器项下的第二项使其工作。谢谢谢谢你的详细回答!最后是一个有效的版本。选择器项下的第二项使其工作。谢谢
<style name="buttonRound" parent="Base.Widget.AppCompat.Button">
<item name="android:background">@drawable/button_transparent_background</item>
</style>