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

С выходом Android 4.0 (Ice Cream Sandwich) системный стиль по умолчанию был значительно изменен, а прозрачный фон новых виджетов делает невозможным чтение текста в некоторых цветовых схемах:

Android 2.3.3

Android 2.3.3 visual

Android 4.0 (тот же APK)

Android 4.0 visual

Поскольку макет 4.0 имеет прозрачный фон, черный текст увидеть невозможно.

Есть ли простой способ справиться с этими изменениями стиля по умолчанию без создания пользовательских стилей для каждого базового виджета Android? или можно запросить более старую системную тему в Android 4.0? Я пытаюсь избежать определения версии системы и изменения цвета шрифта во время выполнения.

0
Daniel Delaney 17 Дек 2011 в 07:44

1 ответ

Ну старые темы есть. Вы настраиваете тему в приложении? Если нет, он перейдет к теме устройства по умолчанию.

Попробуйте явно указать тему, например Theme.Black, Theme.Light и т. д., для своей деятельности. Используйте темы в качестве базовой/родительской темы, а затем, если хотите, вы можете добавить свои определенные стили или переопределить некоторые значения по умолчанию.

Вы можете установить тему для активности в файле манифеста.

Больше опций:

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

if(Build.VERSION.SDK_INT > 10)
 context.setTheme(<res_id_of_holo_them); // or dont any thing if default theme works for u
else
 context.setTheme(<other_theme>);

Вызовите это перед setContentView

0
havexz 17 Дек 2011 в 19:56
Настройка Theme.Black возвращает стиль 2.3.3, но также удаляет специфические функции ICS, такие как новый заголовок/меню панели действий.
 – 
Daniel Delaney
17 Дек 2011 в 08:16