如何隐藏片段中首选项之间的分隔符
Posted
技术标签:
【中文标题】如何隐藏片段中首选项之间的分隔符【英文标题】:how to hide the divider between preferences in fragment 【发布时间】:2015-02-15 13:26:34 【问题描述】:我想在片段中隐藏偏好之间的分隔符。 代码如下:
1.SettingsActivity.java
public class SettingsActivity extends PreferenceActivity
super.onCreate(savedInstanceState);
SettingsFragment settingsFragement = new SettingsFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(android.R.id.content, settingsFragement, "settings");
transaction.commitAllowingStateLoss();
2.SettingsFragment.java
public class SettingsFragment extends PreferenceFragment
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
3.settings.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory>
<Preference
android:key="preference_a"
android:title="preferenceA"/>
<Preference
android:key="preference_b"
android:title="preferenceB"/>
<ListPreference
android:key="list_preference_c"
android:title="list_preferenceC"/>
</PreferenceCategory>
</PreferenceScreen>
偏好中有系统默认的分隔符。 我想隐藏分隔线。
如何隐藏分隔线?非常感谢。
感谢大家的回答。但是,问题是我无法从活动和片段中获取列表视图。
ListView list = (ListView) findViewById(android.R.id.list);
【问题讨论】:
试试lv.setDivider(new ColorDrawable(Color.WHITE));
对不起,没有listView。
如@rana 所回答,从PreferenceFragmentCompat
扩展您的片段并更改底层recyclerview。
【参考方案1】:
如果您使用的是 PreferenceFragmentCompat,它使用的是 Recycle 视图,因此您必须使用此代码。这会自动隐藏分隔线
@Nullable
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
setDivider(new ColorDrawable(Color.TRANSPARENT));
setDividerHeight(0);
【讨论】:
只要把它放在 onViewCreated 中就可以了。这是最好的解决方案。【参考方案2】:这些解决方案对我不起作用。这是我在PreferenceFragmentCompat
中所做的:
@Override
public void setDivider(Drawable divider)
super.setDivider(new ColorDrawable(Color.TRANSPARENT));
@Override
public void setDividerHeight(int height)
super.setDividerHeight(0);
【讨论】:
【参考方案3】:您可以按样式删除分隔线。
<style name="PreferenceFragment.Material">
<item name="android:divider">@null</item>
</style>
【讨论】:
【参考方案4】:在style.xml
中定义不带分隔符的自定义首选项主题:
<style name="PrefsTheme" parent="PreferenceThemeOverlay.v14.Material">
<item name="android:divider">@null</item>
<item name="android:dividerHeight">0dp</item>
</style>
别忘了在你的主应用主题中使用它,它也在style.xml
:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- ... -->
<item name="preferenceTheme">@style/PrefsTheme</item>
</style>
【讨论】:
【参考方案5】:第一:如果在xml中使用listview
在xml文件的listview中设置android:dividerHeight="0dp"
,
秒:
ListView list = (ListView) findViewById(android.R.id.list);
list.setDivider(new ColorDrawable(Color.TRANSPARENT)); // or some other color int
list.setDividerHeight((int) getResources().getDisplayMetrics().density);
【讨论】:
对不起,我试过了。但是 Preference 和 ListPreference 中没有 android:dividerHeight。 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 试试下面的链接,***.com/questions/17983627/… @Igor ,最初的问题编码具有列表视图的内容,所以我建议,尝试在我的代码上面在 xml 中实现,以上是关于如何隐藏片段中首选项之间的分隔符的主要内容,如果未能解决你的问题,请参考以下文章