77

我想在支持它的设备上使用该主题,并在其他设备上Holo.Light回退到常规主题。Light

目前,引用Holo.Light在 3.0+ 上运行良好,但较旧的 API 只是恢复为默认的“黑暗”主题。我可以通过样式继承来实现我想要的吗?

4

2 回答 2

182

您必须创建一个自定义主题并将其保存在某些目录中才能最终将此主题设置为应用程序的默认主题

首先,在值中添加一个像这样的主题.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <!-- Any customizations for your app running on pre-3.0 devices here -->
    </style>
</resources> 

然后,在 res 目录中创建一个名为“values-v11”(Android 3.0+)的目录,并像这样放置一个 theme.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">
        <!-- Any customizations for your app running on 3.0+ devices here -->
    </style>
</resources>

最后在res目录下创建一个名为“values-v14”(Android 4.0+)的目录,并创建一个themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
        <!-- Any customizations for your app running on 4.0+ devices here -->
    </style>
</resources>

使用 DeviceDefault,您的应用程序在任何公司(HTC 三星...)的任何设备上看起来都很完美,这些设备为 Android 4 添加了创建的自定义主题

编辑:三星的界面(TouchWiz)不尊重这个功能,三星设备上的应用程序会非常难看。最好把 Holo 主题放在 :(

最后在你的 manifest.xml

 <application
        ...
        android:theme="@style/MyAppTheme">
于 2012-03-13T09:53:21.323 回答
0

您也可以简单地将背景设置为白色,然后将所有其他小部件设置为黑色,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    **android:background="#ffffff"
    android:orientation="vertical" >

<TextView
    android:id="@+id/tvText"
    android:text="@string/text"
    **android:textColor="#000000"
    android:textSize="12dp" />
于 2012-08-05T00:39:52.350 回答