如何将样式应用于 Android 应用程序的所有按钮

Posted

技术标签:

【中文标题】如何将样式应用于 Android 应用程序的所有按钮【英文标题】:How do I apply a style to all buttons of an Android application 【发布时间】:2011-01-25 12:47:51 【问题描述】:

我的整个应用程序都应用了一种样式:

androidManifest.xml:

<application android:theme="@style/ApplicationStyle" android:icon="@drawable/icon" android:label="@string/app_name">

在我的styles.xml中:

 <style name="ApplicationStyle" parent="android:Theme">
  <item name="android:button">@style/CKButton</item>
 </style>
 <style name="CKButton" parent="android:style/Widget.Button">
  <item name="android:textSize">19sp</item>
  <item name="android:layout_margin">0dip</item>
  <item name="android:background">#ff0000</item>
 </style>

但是样式没有被应用。

很抱歉,如果我只是在 ApplicationStyle - Item 中使用了错误名称,但我不知道在哪里查找对象名称,只是假设 android:button 适用于所有按钮。

【问题讨论】:

请看我在***.com/a/26625931/1065835上的回答 【参考方案1】:

对于 Android 样式,您可以参考 Android 在R.attr 中列出的预设属性。在这种情况下,您似乎想要引用 android:buttonStyle。我认为这会起作用:

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

【讨论】:

天哪,我一直在寻找这样的功能。不知道为什么按钮的 textColor 不遵循主题的 textColor 属性。非常感谢! 任何人都不知道如何为微调器做到这一点? 请注意:如果CKButton样式不继承@android:style/Widget.Button,按钮将停止工作。 parent="android:Widget.Button"parent=@android:style/Widget.Button 有什么区别? 为什么布局编辑器不按照主题中设置的按钮样式预览更改【参考方案2】:

对于 Material 组件主题,应该是这样的:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="materialButtonStyle">@style/AppTheme.Button</item>
</style>

【讨论】:

以上是关于如何将样式应用于 Android 应用程序的所有按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖全局样式(没有 x:Key),或者将命名样式应用于所有以类型为目标的控件?

将样式应用于所有 TreeViewItem

如何将不同的样式应用于 Wordpress wp_nav_menu()

将星形样式应用于Android中的复选框

CSS:将 CSS 样式应用于除 Material Angular 之外的所有内容

如何在没有样式化所有其他选项的情况下使用 CSS 样式选择选项?