gpt4 book ai didi

android - 如何管理 PreferenceFragment 中的分隔符?

转载 作者:IT老高 更新时间:2023-10-28 23:26:49 37 4
gpt4 key购买 nike

我开始在 PreferenceFragment 中处理首选项。这是我所拥有的:

my_preferences

我正在尝试:

  1. 摆脱项目之间的分隔线。我想这可以从样式中定义,但我不知道如何。我试着得到在运行时调用偏好 ListViewfindViewById(android.R.id.list),正如我在某处读到的,但它返回 null。

  2. 在标题顶部设置新的全宽分隔线,如 here 所示.例如,在这种情况下,我希望在“Statistiche”上方有一个全宽分隔线,但不在列表顶部的“Generali”上方。

我想到的唯一方法是将分隔线设置为虚假偏好,例如:

<Preference
android:layout="@layout/divider" //here I set width and a divider resource
/>

<PreferenceCategory ... />

这里的主要问题是我的 PreferenceFragment(或它所在的 ActionBarActivity)有一些左/右填充,这使得我添加到preferences.xml 中的任何分隔符 < strong>不覆盖整个宽度。

所以我的问题是:

  • 如何摆脱您在图片中看到的默认项目-项目分隔符?

  • 如何在标题上方设置全宽分隔线,或者如何摆脱内部 fragment/Activity 填充?当然,我的 Activity 布局没有任何(显式)填充。

最佳答案

AndroidX 让它变得简单,但我希望它有更好的文档记录。

在 XML 中

要在 XML 中添加/删除首选项之间的分隔符,请使用以下属性:

<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">

<Preference
...
app:allowDividerAbove="true/false"
app:allowDividerBelow="true/false"
... />

</androidx.preference.PreferenceScreen>

注意,如果顶部分隔符的 allowDividerBelow 设置为 true 并且底部分隔符具有 allowDividerAbove,则分隔符只会在两个首选项之间显示设置为 true

在代码中

您还可以使用 PreferenceFragmentCompatonActivityCreated 中的以下方法以编程方式更改/删除分隔符:

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

// To remove:
setDivider(null);

// To change:
setDivider(ContextCompat.getDrawable(getActivity(), R.drawable.your_drawable));
setDividerHeight(your_height);
}

关于android - 如何管理 PreferenceFragment 中的分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750901/

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