【问题标题】:overScrollMode - none in PreferenceScreenoverScrollMode - PreferenceScreen 中没有
【发布时间】:2019-02-16 13:10:58
【问题描述】:

我有一个偏好屏幕,我正在尝试摆脱 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

【问题讨论】:

    标签: android preferencescreen


    【解决方案1】:

    在您的片段"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】:

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

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

      【讨论】:

      【解决方案3】:

      这与此处的其他答案非常相似,但更完整一些,尤其是对于那些仍在使用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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        相关资源
        最近更新 更多