设置样式后无法单击按钮

时间:2014-04-04 20:34:56

标签: android android-button android-drawable android-styles

我正在设置应用程序中所有按钮的默认外观,如下所示。当我这样做时,即使我已正确定义所有功能,单击按钮也没有任何反应。事实上,当我注释掉行<item name="android:buttonStyle">@style/button</item>时,按钮点击工作正常(但当然,他们使用默认的android风格)。应用程序主题也在清单中定义:android:theme="@style/AppTheme" 有人可以告诉我为什么会这样吗?感谢。

res / drawable中的

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>

1 个答案:

答案 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>