Как использовать тему Holo.Light и вернуться к "Свету" на устройствах с предварительной сотой?

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

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

Ответ 1

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

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

EDIT: интерфейс Samsung (TouchWiz) не уважает эту функцию, и приложения будут очень уродливыми на устройствах Samsung. Его лучше поставить тему Holo:(

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

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

Ответ 2

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

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