listview中巢狀viewpager的實現總結
最近在做一個專案需要在listView中巢狀viewPager作為第一項,效果如下:
上面的佈局就是一個listView,在實現過程中遇到了以下問題:
1.listView中第一項為viewPager,其他項為單獨包含兩種資料型別,導致listView佈局混亂。
2.viewPager與listView的滑動衝突
3.viewPager的監聽器在viewPager切換的時候,進入了onPageChang方法但介面上沒有顯示相應的頁碼重新整理。
針對問題1,查資料後發現當listView中的item型別超過一項時,需要過載方法
@Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { return position > 0 ? 0 : 1; }
針對問題2,上網搜尋後發現了兩種解決辦法:
(1)重寫listView
public class MyListView extends ListView { private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); mGestureDetector = new GestureDetector(new YScrollDetector()); setFadingEdgeLength(0); } public MyListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); } class YScrollDetector extends SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(distanceY!=0&&distanceX!=0){ } if(Math.abs(distanceY) >= Math.abs(distanceX)) { return true; } return false; } } }
(2)重寫ViewPager
上面兩種方法可以解決listView和ViewPager的滑動問題,注意需要固定ViewPager的高度,才能在listView中完整的顯示出來。public class MyViewPager extends ViewPager { public MyViewPager(Context context) { super(context); } public MyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { getParent().requestDisallowInterceptTouchEvent(true);//這句話的作用 告訴父view,我的單擊事件我自行處理,不要阻礙我。 return super.dispatchTouchEvent(ev); } }
針對問題3
發現我把viewPager的監聽器寫在了listView的getView中,導致多次載入監聽器,出現監聽器不管用的問題。把OnPageChangeListener監聽器放在初始化的時候就可以正常重新整理了。
有不清楚的可以留言。
相關推薦
listview中巢狀viewpager的實現總結
最近在做一個專案需要在listView中巢狀viewPager作為第一項,效果如下: 上面的佈局就是一個listView,在實現過程中遇到了以下問題: 1.listView中第一項為viewPager,其他項為單獨包含兩種資料型別,導致listView佈局混亂。 2.v
Android:ScrollView中巢狀ViewPager和ListView示例
引言: 我們在實際開發一個款Android App時,經常會遇到Scrollview和ViewPager和ListView同時使用的場景,如下圖所示的需求: 下面我們通過程式碼來模擬一下這種場景: 佈局檔案: <?xml version="
webview中巢狀html實現精準定位(百度地圖、高德地圖、騰訊地圖、H5原生定位)js對比
最近在實現一個功能,就是在安卓手機和蘋果手機嵌入html程式碼,實現精準定位,我為此對比幾種定位的方法。我要的是精準定位,就是誤差在100米左右的功能,類似與外賣app那種定位精確度 1. 首先是原生h5定位 if(browser.versions.an
在ListView中巢狀ViewFlow,ViewFlow滑動有些卡頓的問題~
最近做類似於網易新聞頭條那種圖片Banner,實現方法是:在ListView中巢狀ViewFlow,但是ViewFlow的滑動總是不是那麼順暢,覺得應該是觸屏事件攔截衝突的問題吧,在網上查閱了一下我的解決方法如下: 在ViewFlow中宣告mListView,然後將父ListView傳入到ViewFlow,
scrollview中巢狀viewpager不顯示
activityScdetailsBottomVp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override publicvoid onPageS
RecyclerView巢狀ViewPager實現淘寶搜狐主頁廣告輪播圖
RecyclerView巢狀ViewPager實現原理: RecyclerView巢狀ViewPager實際上就是RecyclerView複雜佈局的實現,給其中一個item設定為ViewPager來實現廣告輪播圖。既然知道原理 那麼
fragment中巢狀viewpager,vierpager中有多個fragment,不顯示 ...
現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩
fragment中巢狀viewpager,viewpager中有多個fragment,裡面fragment沒有顯示
fragment巢狀fragment導致裡面fragment介面沒有顯示,例子如下: private void InitViewPager(View parentView) { mPag
關於ListView中巢狀EditText,焦點及其他點選問題
之前專案做過這個類似的UI,處理起來也很麻煩,要求的效果是 1.EditText點擊出現輸入法,遊標顯示在最後,效果如圖 2.編輯完內容後,收起鍵盤儲存修改內容。 這裡會用到幾個類 1.自定義Adapter(主要的處理也是在這裡) 2.自定義的EditText(
安卓在ScrollView中巢狀ViewPager時,設定ViewPager的單個頁面高度隨內容變化
在開發過程中,有時候頁面佈局比較複雜,會使用到ScrollView和ViewPager,如果不進行處理,會出現不顯示ViewPager的子頁面,或者子頁面高度一樣,內容顯示不全,或者是留白太多。我的需求是需要在頁面下面加一個可以左右滑動的分欄,而且兩個分類的頁面高度不一致且不
fragment中巢狀viewpager,vierpager中有多個fragment,不顯示而且滑動卡頓
現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩個fragment。 priv
Android 巢狀ViewPager實現連貫雙滑動
ViewPager巢狀ViewPager後,滑動事件沒法在子ViewPager裡面響應。 解決辦法是自定義子ViewPager。 通知他的父ViewPager現在進行的是本控制元件的操作,不要對我的操作進行干擾 getParent().requestDisallow
android中ListView中巢狀GridView並且把GridView當中的內容全部顯示出來的方法
程式碼如下所示: public class MyGridView extends GridView { public MyGridView(android.content.Context context, android.u
HorizontalScrollView 中巢狀 viewpager滑動衝突的解決
在 HorizontalScrollView 中巢狀 viewpager,viewpager不會隨手勢滑動,所以要複寫viewpager public class MyViewpager extends ViewPager { MyViewpager viewpage
Android-ListView中巢狀(ListView)控制元件時item的點選事件不起作用的問題
解決:1、在主listview佈局檔案中的listview中新增屬性 android:focusable="false" 2、在子listview中最頂上的佈局檔案新增屬性
Listview中巢狀Checkbox的簡單解決辦法
最近專案中做了一個關於批量刪除的這樣一個操作,以前是會做的,誰知道記性不好忘光了,經過一番折騰還是完美的實現了,相信後面還有無數個和我一樣的渣渣會遇到這個問題,那麼就讓我來分享一下咯。 當然這個checkbox控制元件是寫在item佈局中的。我這邊的需求是點選編輯按鈕才會顯
ListView中巢狀GridView時GridView的資料無法完全顯示,只顯示一行
這種情況下需要自定義一個GridView,然後重寫GridView的onMeasure(int widthMeasureSpec, int heightMeasureSpec)的方法,將GridView重新測量,並且指定GridView的新的高度 package com.y
ListView中巢狀GridView點選事件
做一個專案時,需要在ListView中巢狀GridView,因為ListView的每個條目中不一定出現GridView,那麼問題來了,新增GridView的Item的點選事件後,有GridView出現的條目中,ListView的Item點選事件無法觸發,這時我們就需要設定L
解決SwipeRefreshLayout和ScrollView中巢狀ViewPager卡頓問題
autoCycleViewPager.setOnTouchListener(this); int downX; int downY; int dragthreshold = 30; @Overrid
Android中ScrollView中巢狀ViewPager導致ViewPager不顯示的問題
需要ScrollView中加入fillViewport屬性,同時ViewPager設定為固定高度,否則會出現,ViewPager充滿螢幕的情況 <ScrollView android:layout_width="match_parent"