ScrollView 와 ListView 가 함께 사용되는 문제 해결

1573 단어 ScrollViewListView
먼저 ListView는 직접 사용할 수 없으며 사용자 정의한 다음 onMeasure () 메서드를 다시 작성해야 합니다.

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
            MeasureSpec.AT_MOST); 
    super.onMeasure(widthMeasureSpec, expandSpec); 
두 번째 단계: listView 각 Item을 계산하는 방법:

public void setListViewHeightBasedOnChildren(ListView listView) {

  // ListView Adapter

  ListAdapter listAdapter = listView.getAdapter();

  if (listAdapter == null) {

   return;

  }

  int totalHeight = 0;

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

   View listItem = listAdapter.getView(i, null, listView);

   listItem.measure(0, 0); // View

   totalHeight += listItem.getMeasuredHeight(); //

  }

  ViewGroup.LayoutParams params = listView.getLayoutParams();

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

  // listView.getDividerHeight()

  // params.height ListView

  listView.setLayoutParams(params);

 }

3단계: listview 어댑터를 추가한 후 높이를 설정하면 됩니다.

listView.setAdapter(adapter); 
new ListViewUtil().setListViewHeightBasedOnChildren(listView); 

좋은 웹페이지 즐겨찾기