Активность как диалог с использованием HoloEverywhere обрезает макет

Я использую библиотеку HoloEverywhere в своем приложении для Android, чтобы обеспечить согласованную тему для всех поддерживаемых устройств. Однако у меня возникают проблемы с действиями, в которых используется Holo.Theme.Dialog: на моем эмуляторе Android 2.2 он отображается правильно, но на моем устройстве Android 4 (с актуальной темой Holo) макет обрезает элементы справа край диалога.

Мой вопрос: как я могу заставить устройства, имеющие стандартную тему Holo, использовать ее вместо HoleEverywhere? Или как я могу изменить HoloEverywhere, чтобы действия, стилизованные под правильное отображение диалогов на устройствах Android 4+?

Скриншоты:

Диалог в Android 4+

Диалог в Android 2.2

2 ответа

Решение

Я не уверен, была ли эта ошибка исправлена ​​в HoloEverywhere или нет, но я решил изменить все мои классы диалоговой активности на AlertDialogs. Это потребовало некоторых изменений кода, но теперь я могу быть уверен, что мои диалоги будут выглядеть и работать так, как ожидалось.

Вот что вам нужно сделать:

  1. В вашей папке значений создайте стиль в файле styles.xml, ссылаясь на Holo.Theme как на родителя. В моем случае я использовал AppBaseTheme

    <style name="AppBaseTheme" parent="Holo.Theme.Light"></style>
    
  2. В своем манифесте убедитесь, что вы используете этот стиль в своих действиях и в теге приложения.

    <application
      ...
      android:theme="@style/AppBaseTheme" >
    
  3. Создайте папку в папке res с именем values-11 (если ее еще нет)

  4. Создайте еще один файл styles.xml.

  5. Скопируйте тот же стиль, который вы поместили ранее в папку значений, но ссылайтесь на встроенную тему Holo, включенную в 4.0

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light"></style>
    
Другие вопросы по тегам