android - 按钮不显示, Material 主题不工作

标签 android android-studio themes material-design android-styles

我在我的应用程序中遇到了一个非常奇怪的错误。它显示按钮的文本,但不显示按钮本身。这是一个截图: enter image description here

然后我检查了主题编辑器,看看会发生什么,我得到的是这样的: enter image description here

编辑器似乎无法正确渲染 Material Design,无论是深色还是浅色。例如,当我将它切换到 Holo 时,一切正常。

我的 AndroidStudio 是最新的,我不知道发生了什么,但我也会在这里提供我的 styles.xml 文件:

v21\styles.xml

<resources>>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="preferenceStyle">@style/PreferenceThemeOverlay.v14.Material</item>
    </style>

    <style name="MyActionBarTheme" parent="android:Widget.Material.Light.ActionBar">
        <item name="android:background">@color/colorAccent</item>
        <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
        <item name="android:textColor">@color/colorPrimary</item>
    </style>

    <style name="AppTheme" parent="android:Theme.Material.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/background_material_light</item>
        <item name="android:colorPrimary">@color/primary_material_light</item>
        <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="preferenceStyle">@style/PreferenceThemeOverlay.v14.Material</item>
    </style>
</resources>

样式.xml

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/background_material_light</item>
        <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="preferenceStyle">@style/PreferenceThemeOverlay.v14.Material</item>
    </style>


    <style name="MyActionBarTheme" parent="Widget.AppCompat.ActionBar">
        <item name="android:background">@color/colorAccent</item>
        <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
    </style>

    <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/colorPrimary</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="preferenceStyle">@style/PreferenceThemeOverlay.v14.Material</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

最佳答案

好吧,我终于找到了导致错误的原因:我的主要 Activity 是扩展 AppCompatActivity(这是由 Android Studio 在较早阶段生成的)。当我更改它以扩展 FragmentActivity 时,一切都很顺利。

这个解决方案解决了按钮和主题编辑器的问题。我不知道为什么当我的主应用程序没有扩展正确的类时主题编辑器不显示自定义 Material 设计,但是这一小段代码更改解决了我所有的问题。

关于android - 按钮不显示, Material 主题不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898141/

相关文章:

android - 确定字符串/字体尺寸

android - 使用重构工具在 Android Studio 中从 PlusClient 迁移到 GoogleApiClient

java - 带有摄像头输入和基点的 Android 增强现实

html - Big Cartel - Luna 2x2 产品主页

android - SkMaps 不使用侦察音频

android - 自定义按钮的 registerCallback 方法 - facebook sdk

安卓请求队列

Android Studio Gradle 同步失败 - 无法获取资源 'https://.../gradle-3.2.0.pom'

android - 如何为布局设置不同的主题

android - 我怎样才能找到 ?android :attr/dividerVertical? 的定义