Невозможно создать собственный фрагмент диалогового окна стилизации

Я пытаюсь стилизовать все мои фрагменты диалога, чтобы они выглядели одинаково в моем приложении. Диалоги, исходящие из моего фрагмента настроек, оформлены точно так, как я хочу. Для моих пользовательских фрагментов диалога стиль похож, но не совсем то же самое. По каким-то причинам в моих собственных фрагментах диалогового окна не выбираются те же стили, что и для счетчиков spinner, timepicker, datepicker, radiobuttons и edittext. Фактически, виджеты смешаны с белым фоном, и вы не можете видеть, что они есть. Что я делаю не так?

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"/> <style name="Theme.Base" parent="AppTheme"> <item name="colorPrimary">@color/PrimaryBackgroundColor</item> <item name="colorPrimaryDark">@color/SecondaryBackgroundColor</item> <item name="colorAccent">@color/ColorBackgroundAccent</item> <item name="android:textColorPrimary">@color/PrimaryTextColor</item> <item name="android:alertDialogTheme">@style/AppTheme.DialogStyle</item> </style> <style name="AppTheme.DialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/PrimaryBackgroundColor</item> <item name="colorAccent">@color/ColorBackgroundAccent</item> </style> 

Я применяю тему к своему пользовательскому диалоговому фрагменту, как это:

  AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_DialogStyle); 

Диалог моих настроек выглядит так (точно, как я этого хочу):

Фрагмент диалога настроек

Мое собственное диалоговое окно выглядит следующим образом:

Пользовательский фрагмент диалога

Как вы можете видеть, радиокнопка выбрана красным цветом, и вы не можете видеть невыбранную радиокнопку.

    Наконец-то получил ответ !!!

    Это проблема или ошибка с AppCompat 22+. Посмотрите ссылку здесь

    По-видимому, это была ошибка с фрагментами, а виджеты не получали материал в фрагменте. Кажется, они исправили эту проблему, но проблема все еще сохраняется в фрагменте диалога, основанного на том, что я переживаю. Проблема возникает, когда вы используете экземпляр inflater, переданный в Fragment#onCreateView() . Обходной путь на данный момент заключается в том, чтобы вместо этого использовать LayoutInflater из getActivity().getLayoutInflater() соответствии с Google.

    Поэтому я изменил свой код на:

     View view = getActivity().getLayoutInflater().inflate(R.layout.dialog, null); 

    из:

     View view = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.dialoge, null); 

    Все мои виджеты теперь тематические. Всем спасибо. Надеюсь, это поможет кому-то другому.

    Я считаю, что вам нужно установить тему в реальном диалоге, а не в фрагменте

    Используйте этот конструктор для создания своего AlertDialog:

     AlertDialog.Builder(Context context, int theme) 

    т.е.

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), theme) 

    Я думаю, вам нужно добавить еще один элемент в стиле вашего диалога. android:textColorSecondary покажет цвет не выбранного флажка.

    В вашем стиле добавьте его.

     </style> <style name="AppTheme.DialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/PrimaryBackgroundColor</item> <item name="colorAccent">@color/ColorBackgroundAccent</item> <item name="android:textColorSecondary">#000000</item> </style> 

    Он установит флажок «Не проверен» или изменит цвет кнопки черного цвета. Вам нужно изменить #000000 на цвет, который хотите показать.

    Посмотрите, если это поможет – цвета флажков Android appcompat-v7: 21.0.0

    Короче говоря, попробуйте установить android:textColorSecondary .