it-swarm.com.de

Wie verwende ich das Holo.Light-Thema und greife auf "Light" bei Geräten vor der Wabe zurück?

Ich möchte das Holo.Light Theme auf Geräten, die es unterstützen, und greifen auf das reguläre Light Theme auf anderen Geräten zurück.

Im Moment referenziert Holo.Light funktioniert in 3.0+ einwandfrei, ältere APIs kehren jedoch einfach zum Standardthema "Dunkel" zurück. Kann ich mit der Stilvererbung erreichen, was ich will?

77
koi-feeding

Sie müssen ein benutzerdefiniertes Design erstellen und in einigen Verzeichnissen speichern, um dieses Design endgültig als Standarddesign für die App festzulegen

Fügen Sie zunächst in values ​​eine themes.xml wie folgt hinzu:

<?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> 

Erstellen Sie dann ein Verzeichnis mit dem Namen "values-v11" (Android 3.0+) im res-Verzeichnis und fügen Sie eine themes.xml wie diese ein

<?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>

Erstellen Sie schließlich ein Verzeichnis mit dem Namen "values-v14" (Android 4.0+) im Verzeichnis res und erstellen Sie eine 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>

Mit dem DeviceDefault sieht Ihre App in jedem Gerät eines Unternehmens (HTC Samsung ...), das benutzerdefinierte Designs für Android 4) hinzufügt, immer perfekt aus

BEARBEITEN: Samsungs Oberfläche (TouchWiz) respektiert diese Funktion nicht und die Apps werden auf Samsungs Geräten sehr hässlich sein. Sein besseres Holo-Thema: (

Schließlich in Ihrer manifest.xml

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

Sie können den Hintergrund auch einfach auf Weiß einstellen und dann alle anderen Widgets wie folgt schwarz machen:

<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