it-swarm.com.ru

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

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

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

77
koi-feeding

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

Во-первых, в значения добавьте файл 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. Лучше поставить тему Holo: (

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

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

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

<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