2013-03-24 3 views
3

У меня есть обычай DialogPreference Dialog, который имеет свой макет, изложенный в RelativeLayout, который содержит следующее:Android Пользовательские Dialog TextView и Цвет фона

  • Checkbox
  • TextView
  • Text Field

Это хорошо в Android 4.0+, потому что тема, которую мы используем, это Theme.Light, так что цвет фона в диалоговом окне белый, а текст по умолчанию - черный для метки Checkbox и TextView. Тем не менее, в 2.3.3, цвет фона темно-серый, поэтому становится трудно увидеть текст ... тема по-прежнему остается Theme.Light.

Я думал, что для этого потребуется создать специальный диалог, потому что флажок включает/отключает текстовое поле. На данный момент я делаю фоновый цвет relativelayout для этого Dialog white ... но мне не очень нравится это решение, так как там могут быть случаи, когда некоторые другие телефоны 2.3.3 могут не иметь белого цвета в качестве диалогового окна по умолчанию background ...

Есть ли более чистый способ устранить эту проблему?

Я заметил, этот человек имеет те же проблемы: Custom Support Dialog Fragment text is the wrong color

другой с проблемой: Android: Issue with showing dialog from Theme.Light activity

EDIT: Прикрепленный скриншот. Это то, на чем похоже LG Optimus 2X с 2.3.3. В моей галактике samsung samant, которая работает с 2.3.3, фон еще темнее, поэтому вы вряд ли сможете увидеть текст.

enter image description here

+0

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

+0

Я хотел бы сохранить стили OS по умолчанию ... я не хочу использовать 1 пользовательскую тему, чтобы диалоги в версиях 2.3.3 и 4.0+ имели одинаковый стиль ... Если это невозможно, тогда да, это что мне придется делать, я думаю. –

ответ

0

Вы можете сделать заказ диалога тему в файлах стилей, таких как:

less than API 11: 

<style name="MyDialogTheme" parent="android:Theme.Light" > 

API 11 and forward: 

<style name="MyDialogTheme" parent="android:Theme.Holo.Dialog" > 

затем использовать "MyDialogTheme" в вашем диалоге Фрагмент:

... ... 
ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), R.style.MyDialogTheme); 
AlertDialog.Builder builder = new AlertDialog.Builder(context); 
... ... 

надежде, что это поможет.

Смежные вопросы