样式PreferenceFragmentCompat喜欢PreferenceFragment?

时间:2017-07-18 09:55:14

标签: android android-fragments android-theme android-styles preferencefragment

在我的应用程序中,我首先使用不支持库创建Geometry

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);
    }
}

Here's what the PreferenceFragmentCompat looks like

And PreferenceFragment

是否有可能在<item name="preferenceTheme">@style/PreferenceThemeOverlay</item> 中获得相同的风格,似乎我的变化不大,但风格完全不同。

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

修改更新:解决方案是将首选项主题项更改为PreferenceFragmentCompat而不是

1 个答案:

答案 0 :(得分:1)

试试这个:

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