2016-12-13 50 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>