ViewPager2 嵌套滾動示例 展示了一種使用通用 自定義封裝容器布局 解決此問題的辦法。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供廉江網(wǎng)站建設(shè)、廉江做網(wǎng)站、廉江網(wǎng)站設(shè)計、廉江網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、廉江企業(yè)網(wǎng)站模板建站服務(wù),10年廉江做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
首先我們先確定滑動沖突是事件分發(fā)機(jī)制的事情。
在使用 ViewPager2 TabLayout Fragment RecyclerView 的時候發(fā)現(xiàn)這樣一個問題:豎直滑動RecyclerView的時候如果不小心發(fā)生了水平滑動,RecyclerView就滑動不了了,只能滑動ViewPager2,這種體驗(yàn)不是很好。
就是手動設(shè)置viewpager的高度或者設(shè)置ScrollView的一個屬性,讓子布局可以填充整個屏幕。
但是這樣的話,會導(dǎo)致下拉刷新無法觸發(fā)。那就只能手動去修改disallow方法了:這樣修改以后,disallow就可以正常傳遞給viewpager了。到這里,就完美的解決了webview嵌套在Viewpager中的滑動沖突問題。最終實(shí)現(xiàn)效果與uc和夸克一致。
內(nèi)容需要通過卡片的形式來展現(xiàn),還有支持加載更多,所以最底部使用RecyclerView,最好是做成預(yù)加載形式,提前n頁加載下一頁,這樣體驗(yàn)更好。
LinearLayout+ViewPager2實(shí)現(xiàn)底部導(dǎo)航,然后Fragment當(dāng)中MagicIndicator+ViewPager2,實(shí)現(xiàn)頂部導(dǎo)航欄。兩個頁面都是滑動切換的情況。這樣兩個ViewPager2會出現(xiàn)滑動沖突。
首先我們先確定滑動沖突是事件分發(fā)機(jī)制的事情。
1、最簡單的布局:只有一個ListView 如果整個頁面只有一個ListView的話,那么由于ListView本身帶有滾動效果,所以當(dāng)加載的數(shù)據(jù)超過頁面顯示的范圍時,可以通過上下滑動來查看所有的item。因此這種情況下,不需要添加ScrollView。
2、listView.setLayoutParams(params); } }只要在設(shè)置ListView的Adapter后調(diào)用此靜態(tài)方法即可讓ListView正確的顯示在其父ListView的ListItem中。
3、只要在設(shè)置ListView的Adapter后調(diào)用此靜態(tài)方法即可讓ListView正確的顯示在其父ListView的ListItem中。
4、在項目中我們經(jīng)常碰到Recyclerview嵌套Scrollview,兩者會產(chǎn)生滑動沖突,導(dǎo)致卡、滑動失效等現(xiàn)象。
如果整個頁面只有一個ListView的話,那么由于ListView本身帶有滾動效果,所以當(dāng)加載的數(shù)據(jù)超過頁面顯示的范圍時,可以通過上下滑動來查看所有的item。因此這種情況下,不需要添加ScrollView。
viewpager的指示器做兩個,一個放scrollview里面,一個放scrollview外面。老版本的網(wǎng)易云音樂 曾經(jīng)用過這個效果。以前實(shí)現(xiàn)過這樣的效果。ViewPager頂部有一個Layout。
就是手動設(shè)置viewpager的高度或者設(shè)置ScrollView的一個屬性,讓子布局可以填充整個屏幕。
滑動沖突,只需要在子控件的onTouch中增加 getParent().requestDisallowInterceptTouchEvent(true);表示告訴父控件,不要處理這個touch事件,即可解決滑動沖突。
難道就真的不能嵌套嗎? 當(dāng)然可以,只要你再寫一個ScrollView,在里面做點(diǎn)腳,它就支持嵌套了。
不同方向滑動沖突比如ScrollView嵌套ViewPager,或者是ViewPager嵌套ScrollView,這種情況其實(shí)很典型?,F(xiàn)在大部分應(yīng)用最外層都是ViewPager+Fragment 的底部切換(比如微信)結(jié)構(gòu),這種時候,就很容易出現(xiàn)滑動沖突。
布局xml有個CollapsingToolbarLayout,豎向滑動recycleview包裹多個子item是橫向滑動recycleview。
使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+TabLayout可以實(shí)現(xiàn)tab滑動吸頂效果。完整布局文件如下:RecyclerView也可以用NestedScrollView。
總結(jié): 為了使得Toolbar有滑動效果,必須做到如下三點(diǎn):CoordinatorLayout必須作為整個布局的父布局容器。 給需要滑動的組件設(shè)置 app:layout_scrollFlags=”scroll|enterAlways” 屬性。
同時,注意下整個布局的結(jié)構(gòu):CoordinateLayout作為跟布局,內(nèi)部分別放置了一個AppBarLayout和RecyclerView。Toolbar作為AppBarLayout的子控件而存在。其實(shí),就改這么點(diǎn)地方就可以了。想要的效果已經(jīng)有了。
當(dāng)前標(biāo)題:android嵌套滑動 an動畫
文章網(wǎng)址:http://aaarwkj.com/article35/dipjgpi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、軟件開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)