代码之家  ›  专栏  ›  技术社区  ›  Vedavyas Bhat

设置样式后无法单击按钮

  •  1
  • Vedavyas Bhat  · 技术社区  · 10 年前

    我正在设置应用程序中所有按钮的默认外观,如下所示。当我这样做时,即使我已经正确定义了所有函数,单击按钮也不会发生任何事情。事实上,当我评论这一行时 <item name="android:buttonStyle">@style/button</item> ,按钮点击工作正常(但当然,它们使用默认的android风格)。清单中还定义了应用程序主题: android:theme="@style/AppTheme" 有人能告诉我为什么会这样吗?谢谢

    button_shape.xml(res/drawable格式):

    <?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 回复  |  直到 10 年前
        1
  •  3
  •   MTahir    10 年前

    更改您的

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