2016-12-13 51 views
1

我想徹底改變我在Android中的按鈕風格。我發現了一個很好的答案,用於更改按鈕背景here,但我無法弄清楚如何在同一個文件中更改文本樣式。如何在三種模式下更改按鈕文字樣式?

有人知道該怎麼做嗎?

+0

發佈你做了什麼。你出錯了!根據前例。你提供了創建一個資源XML文件的樣式和在你的觀點XML按鈕標籤下鏈接它作爲它的背景 –

+0

我已經做了相同的這[鏈接](http://stackoverflow.com/a/1726352/7105612 ),但我還想修改按鈕的三種不同狀態下的文本樣式:空閒按下焦點 –

+0

哈哈,直到我問你在你的問題中沒有提及。你不是嗎?剛纔提到了三種模式。 mm找到選擇器標籤在按鈕背景 –

回答

1

1,創建您的按鈕

<Button 
    android:id="@+id/button" 
    android:background="@drawable/selector_xml_name" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:text="Hello" /> 

2.創建您的drawable目錄selector.xml

<item android:drawable="@drawable/your_button_is_selected" android:state_selected="true"></item> 
<item android:drawable="@drawable/your_button_is_pressed" android:state_pressed="true"></item> 
<item android:drawable="@drawable/your_button_in_default_state"></item> 

your_button_is_selected,your_button_is_pressed,your_button_in_default_state are your custom xml files for each state that you want to change colors or etc. 
  • 鏈路選擇XML來按鈕 android:background="@drawable/selector_xml_name"
  • 如果你沒有顏色代碼創建一個太RES /值/ colours.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    <color name="white">#FFFFFF</color> 
    <color name="yellow">#FFFF00</color> 
    <color name="fuchsia">#FF00FF</color> 
    <color name="red">#FF0000</color> 
    <color name="silver">#C0C0C0</color> 
    <color name="gray">#808080</color> 
    <color name="olive">#808000</color> 
    <color name="purple">#800080</color> 
    <color name="maroon">#800000</color> 
    <color name="aqua">#00FFFF</color> 
    <color name="lime">#00FF00</color> 
    <color name="teal">#008080</color> 
    <color name="green">#008000</color> 
    <color name="blue">#0000FF</color> 
    <color name="navy">#000080</color> 
    <color name="black">#000000</color> 
    </resources> 
    
    0

    如果我理解正確,您想爲您的按鈕創建具有不同交互狀態的背景樣式,以及相應響應的文本顏色。

    您需要創建2個選擇器,一個設置背景顏色,另一個設置字體顏色。

    下面是這樣做的一個非常基本的例子。涉及更多步驟和更多要做的事情,但您應該瞭解涉及的內容。

    // res/values/styles.xml 
    <style name="SomeStyle" parent="MyAppTheme"> 
        <item name="android:background">@drawable/selector_background</item> 
    </style> 
    
    <style name="SomeTextView" parent="@android:style/TextAppearance"> 
        <item name="android:textColor">@drawable/selector_text</item> 
    </style> 
    
    // Styling the text color selector 
    // res/drawable/selector_text.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <selector 
        xmlns:android="http://schemas.android.com/apk/res/android"> 
    
        <item android:color="@color/inactive_color" android:state_focused="true" android:state_pressed="false"/> 
        <item android:color="@color/active_color" android:state_pressed="true"/> 
        <item android:color="@color/active_color" android:state_drag_hovered="true" android:state_pressed="true"/> 
        <item android:color="@color/active_color" android:state_selected="true" android:state_pressed="true"/> 
        <item android:color="@color/inactive_color"/> 
    
    </selector> 
    
    // The background selector 
    // res/drawable/selector_background.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <selector 
        xmlns:android="http://schemas.android.com/apk/res/android"> 
    
        <item android:drawable="@drawable/background_selector_unselected" android:state_focused="true" android:state_pressed="false"/> 
        <item android:drawable="@drawable/background_selector_selected" android:state_pressed="true"/> 
        <item android:drawable="@drawable/background_selector_unselected"/> 
    
    </selector> 
    
    // Styling the selected background state 
    // res/drawable/selector_background_state_active.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
        <item> 
         <shape android:shape="rectangle"> 
          <solid android:color="@color/shadow_color_1" /> 
         </shape> 
        </item> 
        <item android:bottom="1dp"> 
         <shape android:shape="rectangle"> 
          <solid android:color="@color/shadow_color_2" /> 
         </shape> 
        </item> 
        <item android:bottom="1.5dp"> 
         <shape android:shape="rectangle"> 
          <solid android:color="@color/active_background_color" /> 
         </shape> 
        </item> 
    </layer-list>