风格 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>
在我的应用程序中,我首先创建了 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>