今天想做個導航欄漸變的效果,原來這種效果是通過監聽scrollview的滾動距離實現的。由於首頁較多,而且裡面還巢狀了listview,大家都知道listview巢狀在scrollview中是需要計算高度然後全部顯示出來的,這樣listview中的所有就需要全部載入出來。在做了快取的情況下,進入頁面還是會有明顯的卡頓。這時我就去掉了scrollview,這個頁面只用listview實現。
scrollview滾動距離監控:
scrollview.setscrollviewlistener(new scrollviewlistener()
});
listview滾動距離監控:在網上找了很多,什麼getscrolly();方法,什麼重寫listview中的onscrollchanged等
這都試過了,基本都不好用。最後終於找到下面的文章:
實現**:
listview.setonscrolllistener(new onscrolllistener()
@override
public void onscroll(abslistview arg0, int arg1, int arg2, int arg3)
itemrecord.height = firstview.getheight();
itemrecord.top = firstview.gettop();
int h = getscrolly();//滾動距離
}} }
private int getscrolly()
itemrecod itemrecod = (itemrecod) recordsp.get(mcurrentfirstvisibleitem);
if (null == itemrecod)
return height - itemrecod.top;
} class itemrecod
});
二、獲取滾動高度
public int getscrolly()
int firstvisibleposition = listview.getfirstvisibleposition();
int top = c.gettop();
return -top + firstvisibleposition * c.getheight() ;
}
三、單位時間滾動指定高度
listview.smoothscrollby(h, t);
解決ScrollView巢狀ListView問題
使用linearlayout取代listview 既然listview不能適應scrollview,那就換乙個可以適應scrollview的控制項,幹嘛非要吊死在listview這一棵樹上呢?而linearlayout是最好的選擇。但如果我仍想繼續使用已經定義好的adater呢?我們只需要自定義乙個...
ScrollView巢狀多個ListView
要解決的問題 1 listview在scrollview中不能完全顯示,只能顯示乙個item。預設情況下,android是不支援在scrollview中巢狀listview,因為listview的高度是不確定,會隨著item的高度和item的數量改變。2 焦點問題,如果把listview顯示的項數固...
React Native控制項之Listview
listview元件用於顯示乙個垂直的滾動列表,其中的元素之間結構近似而僅資料不同。listview更適於長列表資料,且元素個數可以增刪。和scrollview不同的是,listview並不立即渲染所有元素,而是優先渲染螢幕上可見的元素。listview元件必須的兩個屬性是datasource和re...