Android Studio 无法覆盖默认主题
Posted
技术标签:
【中文标题】Android Studio 无法覆盖默认主题【英文标题】:Android studio can't override default theme 【发布时间】:2021-09-24 18:07:46 【问题描述】:我正在尝试将主题分配给具有自定义背景的按钮。它看起来就像这样:
<style name="button">
<item name="android:background">@drawable/buttonbackground</item>
</style>
<Button android:theme="@style/button"/>
按钮保持其原始背景,但对于 TextView,例如,它可以工作。
<TextView android:theme="@style/button"/>
问题出在哪里?
【问题讨论】:
您可以进一步简化您的问题并尝试<Button android:background="@drawable/buttonbackground"/>
。如果这确实有效,那么问题与样式有关。如果这不起作用,那么问题出在属性上(因为您使用了错误的属性)
您使用的是 Material Theme 还是 App Compat Theme?
@Blundell 这适用于我当前使用的应用程序主题,但是当我使用默认主题(Theme.MaterialComponents.DayNight.DarkActionBar)时,它也不起作用。问题肯定出在样式上,因为当我删除应用程序主题时,按钮会起作用。但显然该应用程序看起来像垃圾。
@Pinakin 我正在使用 Theme.AppCompat.Light.NoActionBar
【参考方案1】:
更改您的应用主题:
<style name="Theme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
.....
</style>
在 AndroidManifest.xml 中使用@style/Theme:
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme"
>
【讨论】:
【参考方案2】:嗯,这是一个非常简单的解决方案,只需使用style
而不是android:theme
。我只是不知道它的存在。
【讨论】:
以上是关于Android Studio 无法覆盖默认主题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 中将主题从 Darcula 恢复为默认值
Android Studio 中的 Jacoco 代码覆盖率
无法解析 style.xml 中的符号“主题”(Android Studio)
android studio中的任何视图都会根据设备默认主题更改背景颜色