1. ホーム
  2. android

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

2023-08-22 16:19:51

質問

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

現時点では Holo.Light は 3.0+ でうまく動作しますが、古い API では単にデフォルトの「暗い」テーマに戻ってしまいます。スタイル継承を使用して、私が望むものを実現することは可能ですか?

どのように解決するのですか?

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

まず、valuesに以下のような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 のデバイス上で非常に醜いものになります。その良いホロのテーマを置く :(

最後に、manifest.xml に

 <application
        ...
        android:theme="@style/MyAppTheme">