gpt4 book ai didi

android - 以编程方式将首选项添加到 PreferenceScreen 中的特定位置

转载 作者:行者123 更新时间:2023-11-29 15:01:49 25 4
gpt4 key购买 nike

我正在以编程方式填充我的部分偏好设置。这很好用。不幸的是,当用户更改某些偏好时(想想“添加新警报”-偏好),必须添加新的偏好。这也很好用,当我使用 PreferenceCategorie 时(因为新的添加在这样的末尾,所以 myPreferenceCategory.addPreference(newPreference) 就可以了) .但是我该怎么做才能以编程方式将首选项添加到任何特定位置(不仅仅是通常类别的末尾/prefScreen??


not so invisible category

我试图通过设置 android:layout="my_custom_invis_layout"

来使用某种“隐形”PreferenceCategory
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_custom_invis_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="0dp"
android:paddingTop="0dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"/>

不幸的是,那些填充和边距似乎对空类别占用的最小空间没有影响(但使用正值时会影响,这是 - 原因 - 没有帮助)。


我也尝试通过以下方式使布局无效

<PreferenceCategory
android:layout="@null">

但这只是扩大了类别对其他偏好所占的空间。


不幸的是,到目前为止,SO 并没有帮助我解决这个问题。如果有人能指出诸如“在偏好 B 下方添加偏好 A”之类的内容或如何使类别完全不占用空间(因为这也可以解决我的问题),我将非常高兴。

最佳答案

我看到这个问题已经很老了,但是由于我遇到了类似的问题并设法解决了它,所以我认为无论如何发帖都不会造成任何伤害。我解决这个问题的方法是从一开始就在 xml 中添加首选项(在我的例子中是一个需要在其他类别中的特定位置添加的类别),如果还不需要,则以编程方式将其删除。之后(以编程方式)将其放回原位时,它会出现在删除之前的相同位置。还没有尝试过您的特定情况(单个首选项需要进入类别中的特定位置),但我敢打赌它的工作方式相同。

public class PreferencesFragment extends PreferenceFragmentCompat {
private SharedPreferences mSharedPreferences;
private PreferenceCategory mPreferenceCategory;

@Override
public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
mPreferenceCategory = (PreferenceCategory) findPreference("preferenceCategoryKey");

if (preferenceNotRequiredYet) {
removePreferenceCategory();
}

// an I have a SharedPreferenceListener attached that calls
// addPreferenceCategory when I need to add it back
}

private void removePreferenceCategory() {
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("parent_screen_key");
parentScreen.removePreference(mPreferenceCategory);
}

private void addPreferenceCategory() {
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("parent_screen_key");
parentScreen.addPreference(mPreferenceCategory);
}
}

关于android - 以编程方式将首选项添加到 PreferenceScreen 中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43218192/

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