Aplicar tema personalizado a PreferenceFragment

Tengo vista de múltiples paneles con el fragmento izquierdo y derecho. En el fragmento derecho estoy lanzando un PreferenceFragment. El problema es que el fragmento se ve completamente distorsionado sin ningún estilo. ¿Hay una manera de aplicar el tema sólo al PreferenceFragment solo?

Lo intenté pero no funcionó

Mi código

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // create ContextThemeWrapper from the original Activity Context with the custom theme final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.AppTheme_PreferenceTheme); // clone the inflater using the ContextThemeWrapper LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); View view = super.onCreateView(localInflater, container, savedInstanceState); return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.app_settings_preference_layout); } 

Creo que la solución no funcionó porque ya he inflado el diseño de preferencias en onCreate. ¿Hay una manera de inflar la disposición de la preferencia sin usar el método addPreferencesFromResource y apenas usar el servicio de LayoutInflater?

Usted no necesita utilizar onCreateView ()

usted puede:

1) definir el diseño de la aplicación y fragmentos en su actividad xml por ejemplo:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ..blabla <LinearLayout <fragment android:layout_width="match_parent" android:layout_height="wrap_content" android:name="com.xxx.MyPreferencesFragment1" //your own extended class android:id="@+id/preference_fragment1"/> <fragment android:name="com.xxx.MyPreferencesFragment2" //your own extended class android:id="@+id/preference_fragment2"/> </LinearLayout> </RelativeLayout> 

con

 public class MyPreferencesFragment1 extends PreferenceFragment { // Required empty public constructor @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences1); 

O usted puede:

2) sólo definen un diseño de marcador de posición / contenedor ("R.id.fragments_layout") en la actividad xml, y hacen el resto del código java

 <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/fragments_layout"> // only layout - dont define fragments this case 

Y ofc ahora también necesita inflar el archivo xml de preferencias dentro de este contenedor de diseño

 getFragmentManager().beginTransaction().replace/add(R.id.fragments_layout, new MyPreferencesFragment1()).commit(); getFragmentManager().beginTransaction().replace/add(R.id.fragments_layout, new MyPreferencesFragment2()).commit(); 
  • No se puede establecer el icono de preferencia de encabezado mediante? Attr
  • Android - ¿Cómo cambiar los textos en la actividad de preferencias dinámicamente?
  • ¿Cómo puedo activar una preferencia en mi aplicación Android cuando otra preferencia está desactivada?
  • Android CheckBoxPreference: cómo deshabilitar y habilitar otras preferencias en el cambio de preferencias
  • Extraño error utilizando onCreateView en PreferenceFragment al llamar addPreferencesFromResource de onCreate
  • ¿Cuál es la diferencia entre TypedArray.getInteger () y TypedArray.getInt ()?
  • ¿Cómo acceder a widgets en una DialogPreference personalizada con un diseño inflado?
  • Mejores Prácticas para SharedPreferences
  • ¿Cómo mostrar y ocultar las preferencias en Android dinámicamente?
  • PreferenceDataStore en Android O
  • Inicie Actividad desde preferences.xml y obtenga el resultado en onActivityResult
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.