ScrollView巢狀ListView的問題解決

2021-08-15 02:19:55 字數 2956 閱讀 4732

在 scrollview 新增乙個 listview 會導致 listview 控制項顯示不全,通常只會顯示一條,這是因為兩個控制項的滾動

事件衝突導致

解決方法一:

通過 listview 中的 item 數量去計算 listview 的顯示高度,從而使其完整展示

mlistview = (listview) findviewbyid(r.id.listview);

adapter = new myadapter();

mlistview.setadapter(adapter);

setlistviewheightbasedonchildren(mlistview);

public void setlistviewheightbasedonchildren(listview listview)

int totalheight = 0;

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

viewgroup.layoutparams params = listview.getlayoutparams();

params.height = totalheight + (listview.getdividerheight() *

(listadapter.getcount() - 1));

params.height += 5;// if without this statement,the listview will be a

// little short

listview.setlayoutparams(params);

布局檔案

<

linearlayoutxmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<

scrollview

android:id="@+id/sv"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1">

<

linearlayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<

listview

android:id="@+id/listview"

android:layout_width="match_parent"

android:layout_height="wrap_content">

listview>

linearlayout>

scrollview>

linearlayout>

注意:如果直接將 listview 放到 scrollview 中,那麼上面的**依然是沒有效果的.必須將 listview 放到

linearlayout 等其他容器中才行.

解決方法二:

自定義的listview

自定義乙個類繼承自listview,通過重寫其onmeasure方法,達到對scrollview適配的效果

public class mylistview extends listview  

public mylistview(context context, attributeset attrs)  

@override  

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)  

}由於預設顯示的首項是listview,需要手動把scrollview滾動至最頂端。

sv = (scrollview) findviewbyid(r.id.sc);  

sv.smoothscrollto(0,0);

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...