Sie müssen AppCompatActivity
, die für Fragment erforderlich ist, erweitern und eine Unterklasse von PreferenceFragmentCompat
einschließen. Das abstrakte Fragment muss eine Methode überschreiben, in der Sie Ihre Präferenz-Inflationslogik platzieren sollten. Und zuletzt muss Ihr Aktivitätsthema ein preferenceTheme
Attribut angeben.
Lesen Sie die Ankündigung here. Bevorzugt-v7-Bibliothek können Sie PreferenceFragment
(API 11+) mit PreferenceFragmentCompat
Unterklasse zu ersetzen, und SwitchPreference
(API 14+) mit SwitchPreferenceCompat
und haben Ihre Einstellungen Bildschirmarbeit von API 7.
Unten ist, wie ich es Arbeit gemacht:
SettingsActivity.java
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
}
}
Layout/activity_settings.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent" >
<fragment
android:name=".SettingsFragment"
android:tag=".SettingsFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
SettingsFragment.java
public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.preferences);
}
}
xml/preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.v7.preference.PreferenceCategory
...>
<android.support.v7.preference.ListPreference
... />
<android.support.v7.preference.SwitchPreferenceCompat
... />
...
</android.support.v7.preference.PreferenceCategory>
...
</android.support.v7.preference.PreferenceScreen>
Werte/Stile. xml
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
...
</style>
Präferenz-v7 Standard-Theme
<style name="PreferenceThemeOverlay">
<item name="preferenceScreenStyle">@style/Preference.PreferenceScreen</item>
<item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
<item name="preferenceCategoryStyle">@style/Preference.Category</item>
<item name="preferenceStyle">@style/Preference</item>
<item name="preferenceInformationStyle">@style/Preference.Information</item>
<item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference</item>
<item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat</item>
<item name="dialogPreferenceStyle">@style/Preference.DialogPreference</item>
<item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference</item>
<item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
</style>
Sie haben PreferenceFragment vom android.preference Paket richtig? –
https://plus.google.com/+AndroidDevelopers/posts/9kZ3SsXdT2T –
https://github.com/codevscolor/MaterialPreference Ich habe diese Bibliothek implementiert, die verwendet werden kann, um die Materialpräferenz einfach zu erstellen (v7 preference compat wird hier verwendet)) – codevscolor