項目中遇到頁面整體需要可以垂直方向滑動尿贫,頁面內(nèi)部嵌套一個或者多個recyclerview的情況(不管是橫向還是豎向的列表),豎向的recyclerview不需要滑動嚷闭,橫向可以滑動绸狐。很自然的想到scrollview嵌套recyclerview去實現(xiàn)谣妻,但是由于一些細(xì)節(jié)不了解,會出現(xiàn)recyclerview item顯示不全的情況芬骄,甚至是不顯示猾愿。
有4種情況:
- 使用Theme.AppCompat.Light.DarkActionBar 主題,scrollview嵌套recyclerview
- 使用Theme.AppCompat.Light.DarkActionBar 主題账阻,nestedscrollview嵌套recyclerview
- 使用Theme.AppCompat.Light.NoActionBar 主題蒂秘,scrollview嵌套recyclerview
- 使用Theme.AppCompat.Light.NoActionBar 主題,nestedscrollview嵌套recyclerview
第一種情況會顯示不全淘太,解決辦法如下:
scrollview 增加屬性android:fillViewport="true" 姻僧,因為滑動控件scrollview和NestedScrollView 的子控件,必須由一個ViewGroup包裹蒲牧,目前使用LinearLayout撇贺,需要在這個ViewGroup增加屬性android:focusable="true"android:focusableInTouchMode="true"。
最后覆寫recyclerview的canScrollVertically 方法返回false冰抢。
第二種情況recyclerview顯示正常松嘶。
第三種情況會出現(xiàn)頁面打開自動向上滑動一段距離的現(xiàn)象,就算做了第一種情況的處理晒屎,recyclerview仍然顯示不全喘蟆。只好把scrollview替換為nestedscrollview,變成第四種情況去解決鼓鲁。
第四種情況會出現(xiàn)頁面打開自動向上滑動一段距離的現(xiàn)象蕴轨,解決辦法同第一種情況。