web-dev-qa-db-ja.com

Holo.Lightテーマを使用して、ハニカム前のデバイスで「Light」にフォールバックする方法は?

それをサポートするデバイスではHolo.Lightテーマを使用し、他のデバイスでは通常のLightテーマにフォールバックしたいと思います。

現時点では、Holo.Lightの参照は3.0以降で正常に機能しますが、古いAPIは単にデフォルトの「ダーク」テーマに戻ります。スタイルの継承で目的を達成できますか?

77
koi-feeding

このテーマをアプリのデフォルトテーマとして最終的に設定するには、カスタムテーマを作成していくつかのディレクトリに保存する必要があります

まず、値に次のようにthemes.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+)という名前のディレクトリを作成し、次のようなthemes.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を使用すると、Android 4向けに作成されたカスタムテーマを追加する会社(HTC Samsung ...)のデバイスでアプリが常に完璧に見えます。

編集:Samsungのインターフェイス(TouchWiz)はこの機能を尊重しません。Samsungのデバイスではアプリが非常に見苦しくなります。Holoのテーマをより良く配置します:(

最後にmanifest.xmlで

 <application
        ...
        Android:theme="@style/MyAppTheme">
183
Aracem

また、背景を白に設定し、次のように他のすべてのウィジェットを黒にすることもできます。

<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" />
0
Denizen