Как использовать тему Holo.Light и вернуться к «Light» на устройствах с предварительным сотовым наполнением? - PullRequest
77 голосов
/ 13 марта 2012

Я бы хотел использовать тему Holo.Light на устройствах, которые ее поддерживают, и вернуться к обычной теме Light на других устройствах.

На данный момент ссылки Holo.Light работают нормальнона 3.0+, но старые API просто возвращаются к темной теме по умолчанию.Могу ли я достичь того, чего хочу, с помощью наследования стилей?

Ответы [ 2 ]

183 голосов
/ 13 марта 2012

Вы должны создать собственную тему и сохранить ее в некоторых каталогах, чтобы наконец установить эту тему в качестве темы по умолчанию для приложения

Во-первых, в значения добавьте файл 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> 

Затем создайте каталог с именем «values-v11» (Android 3.0+) в каталоге res и поместите файл 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>

Наконец, создайте каталог с именем «values-v14» (Android 4.0+) в каталоге res и создайте файл 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 Samsung ...), в которое добавляются созданные пользовательские темы для Android 4

РЕДАКТИРОВАТЬ: интерфейс Samsung (TouchWiz) не уважает эту функцию, и приложения будут очень уродливыми на устройствах Samsung. Лучше поставить тему Холо: (

Наконец-то в вашем manifest.xml

 <application
        ...
        android:theme="@style/MyAppTheme">
0 голосов
/ 05 августа 2012

Вы также можете просто установить фон на белый, а затем пройти и сделать все остальные виджеты черными, например:

<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" />
...