如何将样式应用于 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),或者将命名样式应用于所有以类型为目标的控件?
如何将不同的样式应用于 Wordpress wp_nav_menu()