如何在Android中更改默认按钮样式?

时间:2015-10-20 08:09:56

标签: android

我想改变Button的风格。我在style.xml中添加了样式,然后将@style/BaseButton设置为每个Button 有什么办法可以做得更好吗?我可以设置主题以更改所有Button或其他视图吗? 我知道我可以将主题添加到style.xml但不幸的是,如果我将@android:background等属性设置为Button,则其他视图的背景也会设置。

所以这就是我需要的:

  • 仅在一个(或某些)位置设置样式。无需设置风格 每个布局和每个<Button />
  • 只有Button会受到影响,而其他观点会留在原点 是
  • 可以轻松更改。

2 个答案:

答案 0 :(得分:2)

使用此

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>

链接自: How do I apply a style to all buttons of an Android application

答案 1 :(得分:1)

按照以下步骤

  1. 创建表示按钮状态的XML文件

     <?xml version="1.0" encoding="utf-8"?>
    
     <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item
     android:state_enabled="false"
     android:drawable="@drawable/button_disabled" />
    <item
    android:state_pressed="true"
    android:state_enabled="true"
    android:drawable="@drawable/button_pressed" />
    <item
    android:state_focused="true"
    android:state_enabled="true"
    android:drawable="@drawable/button_focused" />
    <item
    android:state_enabled="true"
    android:drawable="@drawable/button_enabled" />
    </selector>
    
  2. 创建表示每个按钮状态的XML文件

    第一个按钮形状用于启用按钮状态。

    <?xml version="1.0" encoding="utf-8"?>
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="rectangle">
    <gradient
    android:startColor="#00CCFF"
    android:centerColor="#0000CC"
    android:endColor="#00CCFF"
    android:angle="90"/>
    <padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
    <stroke
    android:width="2dip"
    android:color="#FFFFFF" />
    <corners android:radius= "8dp" />
    </shape>
    

    第二个按钮形状用于聚焦按钮状态。

    <?xml version="1.0" encoding="utf-8"?>
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
    android:startColor="#F7D358"
    android:centerColor="#DF7401"
    android:endColor="#F7D358"
    android:angle="90"/>
    <padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
    <stroke
    android:width="2dip"
    android:color="#FFFFFF" />
    <corners android:radius= "8dp" />
    </shape>
    

    第三个按钮形状用于按下按钮状态。

        <?xml version="1.0" encoding="utf-8"?>
    
      <shape xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="rectangle">
     <gradient
      android:startColor="#0000CC"
      android:centerColor="#00CCFF"
      android:endColor="#0000CC"
      android:angle="90"/>
      <padding android:left="7dp"
      android:top="7dp"
      android:right="7dp"
      android:bottom="7dp" />
      <stroke
      android:width="2dip"
      android:color="#FFFFFF" />
      <corners android:radius= "8dp" />
      </shape>
    

    最后,第四个按钮形状用于禁用按钮状态。

     <?xml version="1.0" encoding="utf-8"?>
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
    android:startColor="#F2F2F2"
    android:centerColor="#A4A4A4"
    android:endColor="#F2F2F2"
    android:angle="90"/>
    <padding android:left="7dp"
    android:top="7dp"
    android:right="7dp"
    android:bottom="7dp" />
    <stroke
    android:width="2dip"
    android:color="#FFFFFF" />
    <corners android:radius= "8dp" />
    </shape>
    
  3. 创建表示按钮样式的XML文件

    <resources>
    <style name="button" parent="@android:style/Widget.Button">
    <item name="android:gravity">center_vertical|center_horizontal</item>
    <item name="android:textColor">#FFFFFFFF</item>
    <item name="android:shadowColor">#FF000000</item>
    <item name="android:shadowDx">0</item>
    <item name="android:shadowDy">-1</item>
    <item name="android:shadowRadius">0.2</item>
    <item name="android:textSize">16dip</item>
    <item name="android:textStyle">bold</item>
    <item name="android:background">@drawable/button</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
    </style>
    

  4. 使用您自己的自定义应用主题创建XML。themes.xml

    <resources>
    <style name="YourApplicationTheme" parent="android:style/Theme.NoTitleBar">
    <item name="android:buttonStyle">@style/button</item>
    </style>
    </resources>
    
  5. 现在,您可以使用新样式

    在应用程序上创建按钮