如何隐藏片段中首选项之间的分隔符

soi*_*ong 11 android fragment preference divider android-fragments

我想隐藏片段中的首选项之间的分隔符.代码如下:

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();
}
Run Code Online (Sandbox Code Playgroud)

2.SettingsFragment.java

public class SettingsFragment extends PreferenceFragment{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

偏好中有系统默认分隔符.我想隐藏分隔线.

如何隐藏分隔线?非常感谢.


谢谢大家的回答.但是,问题是我无法从活动和片段中获取列表视图.

ListView list = (ListView) findViewById(android.R.id.list);
Run Code Online (Sandbox Code Playgroud)

ran*_*ana 12

如果您使用的是PreferenceFragmentCompat,则它正在使用"回收"视图,因此您必须使用此代码.这会自动隐藏分隔线

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

   setDivider(new ColorDrawable(Color.TRANSPARENT));
   setDividerHeight(0);
}
Run Code Online (Sandbox Code Playgroud)

  • 把它放在onViewCreated中它就可以了.这是最好的解决方案. (2认同)

Mid*_*fko 8

这些解决方案对我不起作用.这是我做的PreferenceFragmentCompat:

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

@Override
public void setDividerHeight(int height) {
    super.setDividerHeight(0);
}
Run Code Online (Sandbox Code Playgroud)


pra*_*ash -1

第一:如果使用xml中的listview

android:dividerHeight="0dp"在 xml 文件中的 listview 中设置,

第二:

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); 
Run Code Online (Sandbox Code Playgroud)