Je souhaite modifier DatePickerDialogs et TimePickerDialogs en utilisant leur style spinner. Pour ce cas, j'ai ajouté android: datePickerStyle et android: timePickerStyle à mon AppTheme. Lorsque je testais les changements de style, tout va bien sur un périphérique Nexus virtuel émulé. Mais quand je l'ai testé sur un appareil Samsung, là où noch changé de styles chargés. Les deux appareils fonctionnent avec Nougat.Les modifications de style Android ne fonctionnent pas avec les périphériques Samsung
Voici un extrait de mon style.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:datePickerStyle">@style/AppTheme.DatePicker</item>
<item name="android:timePickerStyle">@style/AppTheme.TimePicker</item>
</style>
<style name="AppTheme.DatePicker" parent="android:Widget.DatePicker">
<item name="android:spinnersShown">true</item>
<item name="android:calendarViewShown">false</item>
</style>
<style name="AppTheme.TimePicker" parent="android:Widget.Material.TimePicker">
<item name="android:timePickerMode">spinner</item>
</style>
Et c'est la façon dont je l'appelle DatePickerDialog. (Les TimePickerDialogs sont appelés de la même manière)
DatePickerDialog datePickerDialog = new DatePickerDialog(
getView().getContext(), SettingsFragment.this, 2000 , 10, 1);
datePickerDialog.show();
Settings.Fragment est le fragment qui appelle les boîtes de dialogue.
Cela lui comment il devrait ressembler Nexus device
Ce qu'il ne devrait pas comment regarder Samsung device
Edit: L'appareil Nexus est un émulé Nexus 5X virtuel avec Android 7.1.1 et l'appareil Samsung est un Samsung S7 Edge avec Android 7.0.
Vous devez utiliser le contexte constructeur AlertDialog pour gonfler les vues personnalisées. LayoutInflater.from (builder.getContext()) gonfler (R.layout.dialog_date, null); Si vous utilisez AppCompat, le thème AlertDialog est un thème de superposition appliqué sur le thème Activité. – BladeCoder
Merci beaucoup. Avoir eu tellement de mal avec Samsung remplaçant les thèmes par défaut depuis si longtemps ... Cela fonctionne! – Otziii
Les fragments doivent toujours avoir un constructeur sans-arg. Il existe une autre solution qui vous permettra d'utiliser un écouteur de rappel à l'intérieur du fragment. Utilisez la méthode getActivity ou getParentFragment(). –