Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發中ScollView嵌套ListView顯示不全問題解決

Android開發中ScollView嵌套ListView顯示不全問題解決

編輯:關於Android編程

大多數時候,我們用ListView來加載數據的頁面不需要在ListView的外面再套上一個ScollView,因為ListView本身可以滾動顯示數據。有時我們頁面中除要用ListView顯示列表數據之外還要顯示其它數據,這時候就需要在整個頁面最個層套上一個Scollview,否則顯示就可能出現問題(比如在ListView上面已經有很多其它數據,顯示在手機上直接導致ListView看不見了,這時就要在整個屏幕布局加ScollView實現滑動界面),用過ScollView嵌套ListView的朋友都知道,在不做任務處理的情況下,ListView的數據只能顯示一行多一點點,其它的就看不到了,這個問題怎麼解決呢?通常我們可以有下面兩種方式:

1,計算高度:

private int totalHeight=0;

public static void setListViewHeight(ListView listView){

/*得到適配器*/

Aadpter adapter = listView.getAdapter();

/*遍歷控件*/

for (int i = 0; i < adapter .getCount(); i++) {

View view = adapter .getView(i, null, listView);

/*測量一下子控件的高度*/

view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

totalHeight+=view.getMeasuredHeight();

}

/*控件之間的間隙*/

totalHeight+=listView.getDividerHeight()*(listView.getCount()-1);

/*2、賦值給ListView的LayoutParams對象*/

ViewGroup.LayoutParams params = listView.getLayoutParams();

params.height = totalHeight;

listView.setLayoutParams(params);

}

2,重寫ListView的onMeasure:

public class WholeListView extends ListView {

public WholeListView (Context context) {
super(context);
}

public WholeListView (Context context, AttributeSet attrs) {
super(context, attrs);
}

public WholeListView (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}

當然上面兩個方法對GridView及Expandlistview也是有效的。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved