2015-10-20 78 views
-1

我想改變Button的風格。我在style.xml中添加樣式,然後將@style/BaseButton設置爲每Button
有什麼辦法可以做得更好?我可以設置主題來更改所有Button或其他視圖嗎?
我知道我可以將主題添加到style.xml,但不幸的是,如果我將@android:background這樣的屬性設置爲Button,則還會設置其他視圖的背景。如何更改Android中的默認按鈕樣式?

因此,這裏有我需要什麼:

  • 設置樣式僅在一個(或一些)的地方(一個或多個)。無需在 每個佈局和每個<Button />設置樣式。
  • 只有Button受到影響,而其他視圖保持在 所在的位置。
  • 可以很容易地更改。

回答

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. 創建一個代表的按鈕樣式

    <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的XML文件。 themes.xml下面

    <resources> 
    <style name="YourApplicationTheme" parent="android:style/Theme.NoTitleBar"> 
    <item name="android:buttonStyle">@style/button</item> 
    </style> 
    </resources> 
    

現在,你可以創建你的應用程序按鈕用新的樣式

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

+0

謝謝。有用。 – blackdog

+0

接受的答案或upvote將appriciated:D –

+0

稍後添加一些解釋也。因爲如果鏈接被破壞,你的回答將無效。對?然而最後voteed.good運氣@Busi_rusi –