ScrollView巢狀ListView問題的解決

2021-07-29 15:05:07 字數 1000 閱讀 8170

scrollview巢狀listview後,因為滑動事件的衝突,導致listview只能顯示乙個item的高度,

針對出現的這個問題,有以下兩種解決方案:

1.動態設定listview

的高度

public static void setlistviewheightbasedonchildren(listviewlistview)  

int totalheight = 0; 

for (int i = 0; i < listadapter.getcount();i++)  

viewgroup.layoutparams params =listview.getlayoutparams(); 

params.height = totalheight +(listview.getdividerheight() * (listadapter.getcount() - 1)); 

listview.setlayoutparams(params); 

}上面這個方法就是設定listview的高度了,在為listview設定了adapter之後使用,就可以解決問題了。

但是這個方法有個兩個細節需要注意:

一是adapter中getview方法返回的view的必須由linearlayout組成,因為只有linearlayout才有measure()方法,如果使用其他的布局如relativelayout,在呼叫listitem.measure(0, 0);時就會拋異常,因為除linearlayout外的其他布局的這個方法就是直接拋異常的,沒理由…。我最初使用的就是這個方法,但是因為子控制項的頂層布局是relativelayout,所以一直報錯,不得不放棄這個方法。

2.自定義乙個listview

寫乙個類去繼承listview然後去重寫onmeasure方法

protected void onmeasure(int widthmeasurespec, intheightmeasurespec)

ScrollView巢狀ListView只顯示一行

在開發的過程當中,由於手機螢幕的大小的限制,我們經常需要使用滑動的方式,來顯示更多的內容。在最近的工作中,遇見乙個需求,需要將listview巢狀到scrollview中顯示。於是乎有了如下布局 執行程式,如下結果,無論你如何調整layout width,layout height屬性,listvi...

ScrollView巢狀GridView的情況

開發中用到了需要scrollview巢狀gridview的情況,由於這兩款控制項都自帶滾動條,當他們碰到一起的時候便會出問題,即gridview會顯示不全。解決辦法,自定義乙個gridview控制項 public class mygridview extends gridview public my...

ScrollView巢狀ListView解決方法

在android中,不允許巢狀具有滑動視窗的view,但是有時又需要用到,這時需要重寫listview方法,這時就可以使用了,具體如下 package com.example.wangyi.review import android.content.context import android.ut...