Як використовувати тему Holo.Light і повернутися до `` Світло '' на попередньо стільникових пристроях?


77

Я хотів би використовувати Holo.Lightтему на пристроях, які її підтримують, і повернутися до звичайної Lightтеми на інших пристроях.

На даний момент посилання Holo.Lightчудово працює на 3.0+, але старіші API просто повертаються до стандартної темної теми. Чи можу я досягти бажаного за допомогою спадкування стилів?

Відповіді:


182

Вам потрібно створити власну тему та зберегти її в деяких каталогах, щоб остаточно встановити цю тему за замовчуванням для програми

По-перше, у значення додайте 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">

1
@Aracem, що ви маєте на увазі під "дуже потворним"? Чи буде він використовувати стару легку тему чи гірше?
l33t

1
Я маю на увазі, що якщо ви встановлюєте тему DeviceDefault на деяких пристроях Samsung, інтерфейс виглядає як "не закінчений" або порожній. Важливо, я не знаю, чи є на всіх пристроях Samsung з Android 4.0+ ця помилка!
Aracem

"Усі проблеми в галузі інформатики можна вирішити за допомогою іншого рівня опосередкованості" :-)
Луїс Мендо,

Я підтверджую, що TouchWiz від Samsung погано працює з Theme.DeviceDefault. На Galaxy Note мій Діалог з’являється з чорним текстом і темним фоном (так майже нечитабельним). Крім того, програма за діалоговим вікном виглядає абсолютно білою.
Стен

Я насправді не можу змусити це працювати. Я не знаю, чого я сумую. Я дотримувався цих точних інструкцій, але це нічого не змінило. варто згадати, що я використовую Phonegap із власними діалоговими вікнами. Він відображає його в потворних чорних діалогових вікнах, яким виглядає 5 років: /
Майлз М.

0

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

<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" />
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.