gpt4 book ai didi

android - 在 PreferenceFragmentCompat 中动态膨胀首选项

转载 作者:行者123 更新时间:2023-11-30 01:43:49 26 4
gpt4 key购买 nike

我正在使用支持库中的 PreferenceFragmentCompat(preference-v14:23.0.1 - 虽然我也尝试过使用 23.1.1)。我将所有偏好设置都放在一个 XML 文件中,并像往常一样在 onCreatePreferences 中将它们膨胀:

 @Override
public void onCreatePreferences(final Bundle bundle, final String s) {
addPreferencesFromResource(R.xml.fragment_settings);

当 fragment 首次显示时,我想隐藏一些首选项,直到我收到网络回调的结果,我可能想再次显示这些首选项。

我尝试将各种首选项的可见性设置为 false,希望以后能够再次将它们设置为可见,但它看起来像:

Preference preference = findPreference(getString(R.string.settings_key_value));
preference.setVisible(false);

有效地从列表中删除首选项,当我稍后再次尝试在首选项上查找时,它返回 null。

作为替代方案,我随后创建了一个方法来创建首选项,然后我可以将其添加到适配器中的相关屏幕/位置:

private Preference createPreference(@StringRes int title, @StringRes int key, @StringRes int summary, int order) {
final Preference preference = new Preference(getContext());
preference.setTitle(title);
preference.setKey(getString(key));
if (summary > 0) {
preference.setSummary(summary);
}
preference.setOrder(order);
return preference;
}

然后我按如下方式使用它:

final PreferenceCategory category = (PreferenceCategory) findPreference(getString(R.string.settings_category_name));
preference = createPreference(R.string.pref_title, R.string.settings_pref_key, R.string.pref_summary, 0);
category.addPreference(preference);

但是,当我这样做时,首选项标题的字体大小不正确(可能还有首选项中的其他样式)。这大概是因为未设置首选项的属性集,并且它没有从我的应用程序主题继承首选项样式。有没有一种方法可以从 xml 中正确地扩充个人首选项,使其具有正确的样式并将其添加到我的首选项列表中,或者修改 createPreference 方法以使其使用正确的样式?

我的 AppTheme 使用以下相关属性定义:

<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>

最佳答案

使用 addPreferencesFromResource 为您的动态属性创建的主题上下文。按照以下方式获取并保存它:

Context styledContext;

@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.preferences);
styledContext=getPreferenceScreen().getContext();
....
}

如果您隐藏(删除)某些属性并需要从 XML 中恢复它们,请使用以下代码行:

   setPreferenceScreen(
getPreferenceManager().inflateFromResource(
styledContext,
R.xml.preferences,
null)
);

关于android - 在 PreferenceFragmentCompat 中动态膨胀首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com