我正在设置应用程序中所有按钮的默认外观,如下所示。当我这样做时,即使我已正确定义所有功能,单击按钮也没有任何反应。事实上,当我注释掉行<item name="android:buttonStyle">@style/button</item>
时,按钮点击工作正常(但当然,他们使用默认的android风格)。应用程序主题也在清单中定义:android:theme="@style/AppTheme"
有人可以告诉我为什么会这样吗?感谢。
button_shape.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="10dp" />
<gradient
android:angle="90"
android:startColor="#6AA4ED"
android:endColor="#927BED"/>
<padding
android:left="10dp"
android:right="10dp"
android:top="12dp"
android:bottom="12dp" />
</shape>
styles.xml:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:buttonStyle">@style/button</item>
</style>
<style name="button">
<item name="android:background">@drawable/button_shape</item>
</style>
答案 0 :(得分:3)
更改您的
<style name="button">
<item name="android:background">@drawable/button_shape</item>
</style>
到
<style name="button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/button_shape</item>
</style>
添加正确的父属性将使您可以点击按钮。
对于不同的按钮状态,您可以使用
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/MyButtonDarkGray"
android:endColor="@color/MyButtonLightGray"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/LightGreen"
android:startColor="@color/DarkGreen"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/LightGreen"
android:startColor="@color/DarkGreen"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>