风格 PreferenceFragmentCompat 像 PreferenceFragment?

Style PreferenceFragmentCompat like PreferenceFragment?

在我的应用程序中,我首先创建了 PreferenceFragment,没有使用这样的支持库:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Display the fragment as the main content.
    FragmentManager mFragmentManager = getFragmentManager();
    FragmentTransaction mFragmentTransaction = mFragmentManager
            .beginTransaction();
    PrefsFragment mPrefsFragment = new PrefsFragment();
    mFragmentTransaction.replace(android.R.id.content, mPrefsFragment);
    mFragmentTransaction.commit();

}

public static class PrefsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preference_screen);
    }
}

但后来我决定使用支持库,因为我一直在整个应用程序中使用支持片段,并且认为这会更加一致

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Display the fragment as the main content.
    FragmentManager mFragmentManager = getSupportFragmentManager();
    FragmentTransaction mFragmentTransaction = mFragmentManager
            .beginTransaction();
    PrefsFragment mPrefsFragment = new PrefsFragment();
    mFragmentTransaction.replace(android.R.id.content, mPrefsFragment);
    mFragmentTransaction.commit();

}

public static class PrefsFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        // Load the preferences from an XML resource
        setPreferencesFromResource(R.xml.preference_screen, rootKey);
    }
}

并添加样式文件,因为没有我它无法工作

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>

Here's what the PreferenceFragmentCompat looks like

And PreferenceFragment

是否可以在PreferenceFragmentCompat中获得相同的样式,我似乎没有太大变化,但得到了完全不同的样式。

另外,还有一个问题?这会影响我所有的片段吗?我从来没有使用过非支持片段,所以我不知道如果我忽略了支持片段,我是否会错过更好的风格。

编辑更新:解决方案是将 preferenceTheme 项目更改为 @style/PreferenceThemeOverlay.v14.Material 而不是

试试这个:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
</style>