web-dev-qa-db-fra.com

Comment utiliser le thème Holo.Light et revenir à «Light» sur les appareils pré-nid d'abeille?

J'aimerais utiliser le Holo.Light thème sur les appareils qui le prennent en charge et revenir au thème Light habituel sur les autres appareils.

Pour le moment, référençant Holo.Light fonctionne bien sur la version 3.0+, mais les anciennes API reviennent simplement au thème "sombre" par défaut. Puis-je réaliser ce que je veux avec un héritage de style?

77
koi-feeding

Vous devez créer un thème personnalisé et le sauvegarder dans certains répertoires pour que ce thème soit finalement défini comme thème par défaut pour l'application.

Premièrement, dans les valeurs, ajoutez un themes.xml comme ceci:

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

Ensuite, créez un répertoire avec le nom "values-v11" (Android 3.0+) dans le répertoire res et mettez un themes.xml comme celui-ci.

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

Enfin, créez un répertoire avec le nom "values-v14" (Android 4.0+) dans le répertoire res et créez un 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>

Avec DeviceDefault, votre application a toujours l’air parfaite dans n’importe quel appareil de toute entreprise (HTC Samsung ...) qui ajoute des thèmes personnalisés créés pour Android 4

EDIT: l'interface de Samsung (TouchWiz) ne respecte pas cette fonctionnalité et les applications seront très laides sur les appareils Samsung. C'est mieux le thème Holo: (

Enfin dans votre manifest.xml

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

Vous pouvez également simplement définir le fond sur blanc, puis passer au noir et rendre tous vos autres widgets noirs, comme ceci:

<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