Android RecyclerView滾動類控件修改、去掉滑動邊界的陰影效果

滾動類控件,大家都用的很多,如 RecyclerView、NestedSrollView…
下面以recyclerView爲例講解,其他滾動控件也同理。

前言

RecyclerView 滾動列表,谷歌爸爸在設計這個控件時候,在滑動到邊界時,默認給我們加上了陰影,谷歌設計的本意呢應該是給提示用戶列表滑動已經到邊緣了,如圖:

陰影示意圖

修改陰影效果的顏色

陰影效果的顏色,其實是由你的項目中styles.xml中的AppTheme的theme定義的colorPrimary這個id的顏色控制的,當我們不指定陰影效果的顏色時,RecyclerView會自動獲取R.color.colorPrimary的顏色。也就是說只要在colors.xml中修改colorPrimary對應的顏色值就可以了。要注意的不能修改這個id命名,不然可能會影響其他控件的表現

    <!--    styles.xml   -->    

    <style name = "AppTheme" parent = "Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name = "colorPrimary">@color/colorPrimary</item>
        <item name = "colorPrimsaryDark">@color/colorPrimaryDark</item>
        <item name = "colorAccent">@color/colorAccent</item>
    </style>
    ------------------------------------------------------------------------

    <!--    colors.xml   -->

    <color name = "colorPrimary">#FFA958</color> 

去掉陰影效果

但是有時候,我們想去掉這個陰影。方法也是很簡單的,只需要調整控件的一個屬性:overScrollModeneveroverScrollMode 顧名思義就是滑動即將超出邊界時的模式,可以調整的屬性有三種:

  • never: 完全去掉滑動邊界的陰影效果
  • always: 總是出現滑動邊界的陰影效果
  • ifContentScrolls:
    • 如果recycleview裏面的內容可以滑動,那麼滑到邊界後繼續滑動會出現滑動邊界的陰影效果
    • 如果recycleview裏面的內容不可以滑動,那麼滑到邊界後繼續滑動不會出現滑動邊界的陰影效果

只要在xml或者在View層代碼中設置了就可以生效。不過要注意,View層代碼一般來說優先級會比xml定義屬性優先級要高。

設置完全去掉陰影效果的示例代碼如下:另外兩個效果也是同理~

//xml代碼中設置
<androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:overScrollMode="never"
/>
//在java/kotlin代碼裏面修改
recyclerview.setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);

設置後,便能消除這個RecyclerView滑動邊界的陰影效果了。

去掉滾動條

這裏順帶一提,滾動控件如何去掉它的滾動條,只需要調整一個屬性

android:scrollbars="none"

希望能幫到有需要的同學~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章