前言
滾動類控件,大家都用的很多,如 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>
去掉陰影效果
但是有時候,我們想去掉這個陰影。方法也是很簡單的,只需要調整控件的一個屬性:overScrollMode
為 never
,overScrollMode
顧名思義就是滑動即將超出邊界時的模式,可以調整的屬性有三種:
- 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"
希望能幫到有需要的同學~