Активность как диалог с использованием HoloEverywhere обрезает макет
Я использую библиотеку HoloEverywhere в своем приложении для Android, чтобы обеспечить согласованную тему для всех поддерживаемых устройств. Однако у меня возникают проблемы с действиями, в которых используется Holo.Theme.Dialog: на моем эмуляторе Android 2.2 он отображается правильно, но на моем устройстве Android 4 (с актуальной темой Holo) макет обрезает элементы справа край диалога.
Мой вопрос: как я могу заставить устройства, имеющие стандартную тему Holo, использовать ее вместо HoleEverywhere? Или как я могу изменить HoloEverywhere, чтобы действия, стилизованные под правильное отображение диалогов на устройствах Android 4+?
Скриншоты:
2 ответа
Я не уверен, была ли эта ошибка исправлена в HoloEverywhere или нет, но я решил изменить все мои классы диалоговой активности на AlertDialogs. Это потребовало некоторых изменений кода, но теперь я могу быть уверен, что мои диалоги будут выглядеть и работать так, как ожидалось.
Вот что вам нужно сделать:
В вашей папке значений создайте стиль в файле styles.xml, ссылаясь на Holo.Theme как на родителя. В моем случае я использовал AppBaseTheme
<style name="AppBaseTheme" parent="Holo.Theme.Light"></style>
В своем манифесте убедитесь, что вы используете этот стиль в своих действиях и в теге приложения.
<application ... android:theme="@style/AppBaseTheme" >
Создайте папку в папке res с именем values-11 (если ее еще нет)
Создайте еще один файл styles.xml.
Скопируйте тот же стиль, который вы поместили ранее в папку значений, но ссылайтесь на встроенную тему Holo, включенную в 4.0
<style name="AppBaseTheme" parent="android:Theme.Holo.Light"></style>