0

У меня проблема с темами и стилями в Android при использовании разных версий Android.DialogFragment не использует мою нужную тему

Таким образом, основная проблема заключается в том, что в какой-то момент приложения я обнаружил DialogFragment и содержит EditText. AlertDialog создается следующим образом:

AlertDialog dialog = new AlertDialog.Builder(getActivity()) 
      .setPositiveButton ... 

и EditText создается и добавляется так:

editor = new EditText(getActivity()); 
dialog.setView(editor); 

На моем Lollipop устройстве, то EditText имеет нижнюю строку с моим желаемым цветом. (c1 в списке ниже).

Но на моем устройстве Android 4.3 оно имеет стандартную уродливую синюю нижнюю линию.

Мое приложение имеет apptheme, определяющее (среди прочих) эти пункты:

<item name="colorPrimary">@color/c1</item> 
    <item name="colorPrimaryDark">@color/c2</item> 
    <item name="colorAccent">@color/c3</item> 

    <item name="colorControlNormal">@color/c1</item> 
    <item name="colorControlActivated">@color/c2</item> 
    <item name="colorControlHighlight">@color/c3</item> 

диалогового фрагментах запускаемые деятельностей наследуя это приложение тему, и я всегда с помощью регулярного getActivity() в контексте ,

Так кто-нибудь испытал это? Я думаю, что он должен автоматически использовать правильные цвета (через colorControlNormal, colorControlActivated и colorControlHighlight), но они игнорируются.

Я пользуюсь appcompat 22.2.0 кстати.

Спасибо за любой вклад!

ответ

2

Я решил эту проблему, используя android.support.v7.widget.AppCompatEditText вместо обычного Edittext. Теперь он использует правильный стиль оформления материалов.

+0

Возможно также использовать все виджеты appcompat. Я закончил использование AppCompatButton, AppCompatImageView и т. Д. –

+0

Ну, я экспериментировал с одним и тем же, но, судя по всему, большинство этих представлений будут использовать их версию AppCompat автоматически, если тема является темой AppCompat. Поэтому для «большинства» из них это не имеет значения. (Не нужно также для editText, но может быть другим, поскольку он находится в диалоговом окне DialogFragment). См. Это сообщение для получения некоторой информации об этом. http://stackoverflow.com/questions/35009532/difference-between-android-framework-widgets-and-their-appcompat-version – Joakim