我使用 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
请问有什么想法吗??
您似乎在使用 Material Design 3 在 Android 应用程序中全局应用自定义按钮样式时遇到了问题。虽然该样式在直接应用于按钮时有效,但在通过主题应用时不会传播。
可能原因:
主题继承:确保从 Widget.Material3.Button.OutlinedButton 正确继承。 样式冲突:检查应用程序其他部分中是否存在覆盖样式。 构建缓存问题:清理并重建您的项目。 继承顺序:验证主题继承的顺序。 故障排除:
使用 Android Studio 的主题编辑器可视化主题层次结构。 使用 lint 工具检查样式冲突。 尝试不同的样式名称或父样式。 如果您可以提供有关项目结构、特定代码片段或错误消息的更多详细信息,我可以提供更多量身定制的帮助。