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