overScrollMode-PreferenceScreen中没有

时间:2019-02-16 13:10:59

标签: android preferencescreen

我有一个偏好屏幕,并且我试图摆脱overScroll。我已经尝试了其他stackoverflow帖子中提到的一堆不同的东西,但是无法禁用overScroll发光。这是我尝试过的:

<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:overScrollMode="never"
    android:fadingEdge="none"
    style="@style/PreferenceScreenStyle">

    <androidx.preference.PreferenceCategory android:title="@string/control_file_settings"
    app:iconSpaceReserved="false">

        <androidx.preference.SwitchPreference
            android:key="key"
            android:title="title"
            android:defaultValue="false"
            app:iconSpaceReserved="false"/>
        .
        . 
        .
    </androidx.preference.PreferenceCategory>
    .
    .
    .
</androidx.preference.PreferenceScreen>

下面是我的styles.xml

<style name="PreferenceScreenStyle" parent="@style/PreferenceThemeOverlay.v14.Material">
    <item name="android:scrollViewStyle">@style/CustomScrollView</item>
    <item name="android:listViewStyle">@style/CustomListView</item>
</style>

<style name="CustomScrollView" parent="android:Widget.ScrollView">
    <item name="android:overScrollMode">never</item>
    <item name="android:fadingEdge">none</item>
</style>

<style name="CustomListView" parent="android:Widget.ListView">
    <item name="android:overScrollMode">never</item>
    <item name="android:fadingEdge">none</item>
</style>

Preference Fragment

Overscroll glow

3 个答案:

答案 0 :(得分:0)

只需将这两行添加到onCreate上的SettingsActivity方法中即可:

ListView list = findViewById(android.R.id.list);
list.setOverScrollMode(ListView.OVER_SCROLL_NEVER);

答案 1 :(得分:0)

在片段"Fragment : PreferenceFragmentCompat()"中,像这样添加"listView.overScrollMode = View.OVER_SCROLL_NEVER"

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        listView.overScrollMode = View.OVER_SCROLL_NEVER
}

答案 2 :(得分:0)

这与这里的其他答案非常相似,但更完整一些,特别是对于那些仍在使用 PreferenceFragment(而不是 AndroidX 的 PreferenceFragmentCompat)的人。

您需要覆盖 onViewCreated 并使用 View.findViewById() 来获取 ListView 对象:

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    // Remove over-scroll effect
    ListView list = view.findViewById(android.R.id.list);
    if (list != null) {
        list.setOverScrollMode(ListView.OVER_SCROLL_NEVER);
    }
}