我无法将按钮样式应用于整个应用程序

问题描述 投票:0回答:1

我使用 Material Design 3 API 创建了一个只有边框的按钮样式。如果我将此样式直接应用于按钮,效果就是所需的效果,但如果我进行测试以将其应用于活动或整个应用程序,从而影响所有按钮,则该样式不会传播。知道这里有什么问题吗?

主题.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="android:buttonStyle">@style/buttonOnlyBorder</item>
    </style>

</resources>

AndroidManifest.xml

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

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        tools:targetApi="28"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="buttonOnlyBorder" parent="@style/Widget.Material3.Button.OutlinedButton">
        <item name="strokeColor">#DE0000</item>
        <item name="strokeWidth">2dp</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:textSize">15sp</item>
    </style>
</resources>

直接在按钮上设置样式的屏幕截图

https://i.sstatic.net/GqmNPpQE.png

在此询问中通过主题应用按钮样式不起作用,直接应用效果很好谈论类似的情况,但解决方案不适用于我的项目。

https://i.sstatic.net/Inj4Q0Wk.png

请问有什么想法吗??

android styles material-design themes
1个回答
0
投票

您似乎在使用 Material Design 3 在 Android 应用程序中全局应用自定义按钮样式时遇到了问题。虽然该样式在直接应用于按钮时有效,但在通过主题应用时不会传播。

可能原因:

主题继承:确保从 Widget.Material3.Button.OutlinedButton 正确继承。 样式冲突:检查应用程序其他部分中是否存在覆盖样式。 构建缓存问题:清理并重建您的项目。 继承顺序:验证主题继承的顺序。 故障排除:

使用 Android Studio 的主题编辑器可视化主题层次结构。 使用 lint 工具检查样式冲突。 尝试不同的样式名称或父样式。 如果您可以提供有关项目结构、特定代码片段或错误消息的更多详细信息,我可以提供更多量身定制的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.