Android 在整个应用程序中更改按钮样式

Android 在整个应用程序中更改按钮样式,android,android-manifest,android-button,android-styles,Android,Android Manifest,Android Button,Android Styles,我正在尝试将我应用程序中所有按钮的文本颜色都改为白色,并尝试将其加粗。但这并没有发生,我正在覆盖android:Widget.Button 我正在开发果冻豆4.1.2 我做错了什么 清单中的主题定义 android:theme="@style/spui" > 我喜欢的主题 <style name="spui" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="android:buttonSt

我正在尝试将我应用程序中所有按钮的文本颜色都改为白色,并尝试将其加粗。但这并没有发生,我正在覆盖android:Widget.Button 我正在开发果冻豆4.1.2 我做错了什么

清单中的主题定义

android:theme="@style/spui" >
我喜欢的主题

<style name="spui" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:buttonStyle">@style/Buttonspui</item>
</style>

@样式/按钮界面
按钮本身的样式

  <style name="Buttonspui" parent="android:Widget.Button">
      <item name="android:background">@drawable/btn_default_holo_light</item>
      <item name="android:minHeight">48dip</item>
      <item name="android:minWidth">64dip</item>
      <item name="android:textColor">#ffffff</item>
      <item name="android:textStyle">bold</item>
  </style>

@可绘制/btn\u默认\u全息灯
48dip
64dip
#ffffff
大胆的
按钮

 <Button
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginTop="15dp"
     android:text="@string/edit"
     android:id="@+id/btnEdit"
     style="@style/Buttonspui"/>

要设置
按钮的样式
,您可以使用以下选项:

转到
drawable
文件夹,制作一个名为“style”的XML(例如
button.XML
)文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android">  

    <item>
         <shape>
             <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270" />
             <stroke   android:width="1px"          android:color="#000000" />  
                <corners android:bottomLeftRadius="0dp"
                android:bottomRightRadius="0dp"
                android:topLeftRadius="8dp"
                android:topRightRadius="8dp"/>       
              <padding  android:left="10dp"  android:top="10dp" android:right="10dp" android:bottom="10dp" />
         </shape>  
   </item> 

</selector>
现在,要更改字体颜色和样式,可以使用以下选项,这些选项是values文件夹中
style.xml
的一部分

<style name="buttonStyle" parent="@android:style/Widget.Button.Small">
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
</style>
最后的代码是:

<Button
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="15dp"
 android:text="@string/edit"
 android:id="@+id/btnEdit"
 android:background="@drawable/button.xml"
 style="@style/buttonStyle"
/>


希望这有帮助:)

这将更改整个应用程序的默认按钮样式,包括警报对话框按钮。根据您的样式调整样式

res/values/styles.xml

<resources>

    <!-- Your base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Other styles -->
        <item name="buttonStyle">@style/MyCustomButton</item>
    </style>

    <style name="MyCustomButton" parent="Widget.AppCompat.Button">
        <item name="android:background">@drawable/selector_button</item>
        <item name="android:textColor">@color/buttonText</item>
        <item name="android:textStyle">bold</item>
        <item name="android:paddingLeft">16dp</item>
        <item name="android:paddingRight">16dp</item>
    </style>
</resources>

@样式/自定义按钮
@可拖动/选择器按钮
@颜色/按钮文字
大胆的
16dp
16dp
res/drawable/selector_button.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_selected" android:state_pressed="true"/>
    <item android:drawable="@drawable/button_selected" android:state_focused="true"/>
    <item android:drawable="@drawable/button_unselected"/>
</selector>

res/drawable/button_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="1000dp"/>

    <solid android:color="@color/buttonSelected"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="1000dp"/>

    <solid android:color="@color/buttonUnselected"/>
</shape>

res/drawable/button_unselected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="1000dp"/>

    <solid android:color="@color/buttonSelected"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="1000dp"/>

    <solid android:color="@color/buttonUnselected"/>
</shape>


尝试将该样式应用于每个按钮。那就行了。如果你在应用程序中应用这个主题,确保您没有为活动或按钮本身应用其他样式。按钮本身没有其他样式,通常我不应该为按钮定义样式,因为我正在覆盖
android:Widget。我定义为样式父级的按钮这是正确的答案。但仍然不能相信谷歌没有提供一种更为一致的方式来为按钮制作一个全球主题。从语义上讲,这是错误的。我们必须手动指定背景和样式,而不是让我们修改默认的主题。我已经尝试过了,除了textColor,其他都可以。它只是不继承白色,而是显示黑色。所有其他的都是从样式和背景中正确继承的。如果我在button实例上显式地设置了相同的属性,它就会工作。奇怪的