Android 中的 AppCompat 和主题问题

Issue with AppCompat and Themes in Android

我最近使用 minSdkVersion 15 创建了一个新项目,编译并 targetedSdkVersion 21,以及一些活动。我想为我的应用程序使用默认的 holo dark 主题,根据我只需要使用 Theme.AppCompat 的文档。当我在个人 phone (运行ning 4.4.2) 上对此进行测试时,我得到了深色全息主题和我所期望的。但是,当我 运行 最新的带有 Lollipop 的 nexus 模拟器时,主题和控件看起来完全不同。例如,Lollipop 中的开关显示为滑块,没有为 on/off 状态指定的文本。

有没有一种方法可以让我保持一致的外观和感觉(它在我的 phone 上的外观),而不必担心应用程序在新设备上看起来完全不同?

编辑:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat">
        <!-- Customize your theme here. -->
    </style>
    <style name="AppThemeDialog" parent="Theme.AppCompat.Dialog">
        <!-- Customize your theme here. -->
    </style>
</resources>

设置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "placeholder"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

图片:

  1. Lollipop/Emulator版本:http://i.stack.imgur.com/u8QhX.png

  2. Kitkat/Phone版本:http://i.stack.imgur.com/u8QhX.png

许多小部件 UI 已故意更新为最新版本 appcompat-v7 的新 'Material Design' 外观。所以如果你真的想抵制这种趋势,你将不得不用你自己的背景手动覆盖你的小部件用户界面。