问题描述
我想隐藏片段中的偏好之间的分隔线. 代码如下:
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.
ListView list = (ListView) findViewById(android.R.id.list);
推荐答案
如果您使用的是PreferferenceFragmentCompat,则使用回收视图,因此必须使用此代码.这会自动隐藏分隔板
@Nullable @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { setDivider(new ColorDrawable(Color.TRANSPARENT)); setDividerHeight(0); }
其他推荐答案
这些解决方案对我不起作用.这是我在PreferenceFragmentCompat中所做的:
@Override public void setDivider(Drawable divider) { super.setDivider(new ColorDrawable(Color.TRANSPARENT)); } @Override public void setDividerHeight(int height) { super.setDividerHeight(0); }
其他推荐答案
定义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>
问题描述
I want to hide the divider between preferences in fragment. The code is below:
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>
There are system default dividers amoung the preferences. I want to hide the dividers.
How to hide the dividers? Thanks a lot.
Thanks for everyone`s answer. But,the question is that I cannot get the listview from the activity and fragment.
ListView list = (ListView) findViewById(android.R.id.list);
推荐答案
if you are using PreferenceFragmentCompat , it is using Recycle view so you have to use this code . This automatically hides the divider
@Nullable @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { setDivider(new ColorDrawable(Color.TRANSPARENT)); setDividerHeight(0); }
其他推荐答案
These solutions didn't work for me. Here's what I did in PreferenceFragmentCompat:
@Override public void setDivider(Drawable divider) { super.setDivider(new ColorDrawable(Color.TRANSPARENT)); } @Override public void setDividerHeight(int height) { super.setDividerHeight(0); }
其他推荐答案
Define custom preference theme without dividers in your style.xml:
<style name="PrefsTheme" parent="PreferenceThemeOverlay.v14.Material"> <item name="android:divider">@null</item> <item name="android:dividerHeight">0dp</item> </style>
and don't forget to use it in your main app theme which is also in style.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- ... --> <item name="preferenceTheme">@style/PrefsTheme</item> </style>