gpt4 book ai didi

android - 深色主题中的 TextButton 默认颜色

转载 作者:行者123 更新时间:2023-12-04 23:58:35 27 4
gpt4 key购买 nike

尝试更改我的 Android 应用程序中所有 TextButtons 的默认颜色 w/material。我看到我可以设置“materialButtonStyle”和“materialButtonOutlinedStyle”的样式。但是我没有看到文本按钮的属性,可能类似于“materialButtonTextStyle

<style name="AppTheme" parent="Theme.MaterialComponents">
<item name="materialButtonStyle">@style/myButton</item>
<item name="materialButtonOutlinedStyle">@style/myButtonOutlined</item>
</style>

示例按钮:

<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:text="Text Button" />

是否可以全局更改所有 Material 文本按钮的样式?

编辑:从主题按钮 Material 文档中尝试了这一点。

<style name="AppTheme" parent="Theme.MaterialComponents">
<item name="borderlessButtonStyle">@style/Widget.App.Button.TextButton</item>
</style>

<style name="Widget.App.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.TextButton</item>
</style>

<style name="ThemeOverlay.App.Button.TextButton" parent="">
<item name="colorPrimary">@color/md_purple_600</item>
</style>

但是仍然没有为所有文本按钮设置文本颜色样式。

最佳答案

根据 Buttons -Material design文档 TextButton 有一个默认样式主题属性 ?attr/borderlessButtonStyle 可以在 AppTheme 中使用它来全局更改所有 Material 文本按钮的样式。

全局更改所有 TextButton 的文本颜色:

1.在 Light and Night AppTheme 中定义 borderlessButtonStyle 属性,如下所示:

<!-- Base application theme. -->
<style name="MyAppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="borderlessButtonStyle">@style/Widget.App.Button.TextButton</item>
</style>

<!-- For TextButton-->
<style name="Widget.App.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.TextButton</item>
</style>

<style name="ThemeOverlay.App.Button.TextButton" parent="">
<item name="colorPrimary">@android:color/holo_red_dark</item>
</style>

2.在每个 TextButton xml 布局中定义样式 style="?attr/borderlessButtonStyle" 如下所示:

<Button
style="?attr/borderlessButtonStyle"
android:id="@+id/text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Button" />

文本颜色将根据 Light/Night Theme 中定义的 colorPrimary 进行全局更改。

按照相同的方式,您可以为其他 Material 按钮样式实现相同的效果,例如 OutlinedButton 和默认的 Button,例如:

<!-- Base application theme. -->
<style name="MyAppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<item name="borderlessButtonStyle">@style/Widget.App.Button.TextButton</item>
<item name="materialButtonOutlinedStyle">@style/Widget.App.Button.OutlinedButton</item>
<item name="materialButtonStyle">@style/Widget.App.Button</item>
</style>


<!-- For TextButton-->
<style name="Widget.App.Button.TextButton" parent="Widget.MaterialComponents.Button.TextButton">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.TextButton</item>
</style>

<style name="ThemeOverlay.App.Button.TextButton" parent="">
<item name="colorPrimary">@android:color/holo_red_dark</item>
</style>

<!-- For OutlinedButton-->
<style name="Widget.App.Button.OutlinedButton" parent="Widget.MaterialComponents.Button.OutlinedButton">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button.OutlinedButton</item>
</style>

<style name="ThemeOverlay.App.Button.OutlinedButton" parent="">
<item name="colorPrimary">@android:color/holo_orange_dark</item>
</style>

<!-- For Button -->
<style name="Widget.App.Button" parent="Widget.MaterialComponents.Button">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Button</item>
</style>

<style name="ThemeOverlay.App.Button" parent="">
<item name="colorPrimary">@android:color/holo_blue_dark</item>
<item name="colorOnPrimary">@android:color/holo_blue_bright</item>
</style>

并且每个Button 监听上面的全局属性:

<Button
style="?attr/borderlessButtonStyle"
android:id="@+id/text_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Button" />

<Button
style="?attr/materialButtonOutlinedStyle"
android:id="@+id/outlined_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Outlined Button" />

<Button
android:id="@+id/default_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Default Button" />

以下是浅色模式下每种按钮样式的示例结果:

light_mode

下面是夜间模式下每种按钮样式的示例结果:

dark_mode

关于android - 深色主题中的 TextButton 默认颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71699296/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com