как скрыть разделитель между настройками во фрагменте

Я хочу скрыть разделитель между настройками во фрагменте. Код ниже:

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);

person soildong    schedule 17.12.2014    source источник
comment
попробуй как lv.setDivider(new ColorDrawable(Color.WHITE));   -  person ρяσѕρєя K    schedule 17.12.2014
comment
извините, списка нет.   -  person soildong    schedule 17.12.2014
comment
как ответил @rana, расширьте свой фрагмент от PreferenceFragmentCompat и измените базовый recyclerview.   -  person gaara87    schedule 29.03.2016


Ответы (5)


если вы используете PreferenceFragmentCompat, он использует представление Recycle, поэтому вы должны использовать этот код. Это автоматически скрывает разделитель

@Nullable
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {

   setDivider(new ColorDrawable(Color.TRANSPARENT));
   setDividerHeight(0);
}
person rana    schedule 16.03.2016
comment
Просто поместите это в onViewCreated, и все заработает. Это лучшее решение. - person Tommie; 31.03.2017

Эти решения не работали для меня. Вот что я сделал в PreferenceFragmentCompat:

@Override
public void setDivider(Drawable divider) {
    super.setDivider(new ColorDrawable(Color.TRANSPARENT));
}

@Override
public void setDividerHeight(int height) {
    super.setDividerHeight(0);
}
person MidasLefko    schedule 29.03.2016

Вы можете удалить разделитель по стилю.

<style name="PreferenceFragment.Material">
    <item name="android:divider">@null</item>
</style>
person The Finest Artist    schedule 12.02.2018

Определите пользовательскую тему предпочтений без разделителей в вашем 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>
person dsalaj    schedule 10.08.2019

Во-первых: если используется список в xml

установите android:dividerHeight="0dp" в списке в xml-файле,

второй:

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); 
person prakash    schedule 17.12.2014
comment
извините, я пытался, но в Preference и ListPreference нет android:dividerHeight. - person soildong; 17.12.2014
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его публикацией. - person Igor Borisenko; 17.12.2014
comment
попробуйте эту ссылку ниже, stackoverflow. com/questions/17983627/ - person prakash; 17.12.2014
comment
@Igor, изначально вопросы, кодирующие содержимое списка, поэтому я рекомендовал попробовать реализовать мой код выше в xml, - person prakash; 17.12.2014