2012-05-08 3 views
2

내 활동에는 세 가지 목록이 있습니다. 응용 프로그램을 실행 한 후에는 화면을 스크롤 할 수 없습니다. 다른 사람 위에있는 목록을 스크롤 할 수 있지만 페이지 전체를 스크롤 할 수는 없습니다. 내 xml 레이아웃에 ScrollView을 추가하려했지만 lint는 "세로로 스크롤하는 ScrollView에는 수직으로 스크롤하는 다른 위젯 (ListView)이 없어야합니다"라고 표시됩니다.안드로이드, 일부 목록 항목이있는 화면에 ScrollView를 추가하는 방법?

내 화면을 스크롤 가능하게 만드는 방법은 무엇입니까?

답변

1

enter image description here

<ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <ListView 
       android:id="@+id/listView1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" > 
      </ListView> 

     </LinearLayout> 

    </ScrollView> 

있는 ScrollView 당신이 원하는 것을 얻을 수 있도록 한 아이의 레이아웃은 그래서 스크롤 내부의 목록보기을 지원합니다.

+0

, 당신을 감사 내가 이런 짓을하지만 결과는 내가 화면을 스크롤 할 수없는, 동일했다. – Hesam

2

은 무엇 당신이 할 수있는 것은 당신이 그들을 팽창하여 목록보기에 머리글과 바닥 글을 추가 할 수 있다는 것입니다 이런 식으로

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

    <LinearLayout android:id="@+id/GlobalLayout" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" > 

     <ListView android:id="@+id/ListView1" 
        android:choiceMode="multipleChoice" 
        android:layout_height="100dip" 
        android:layout_width="fill_parent" /> 
     <ListView android:id="@+id/ListView2" 
        android:choiceMode="multipleChoice" 
        android:layout_height="100dip" 
        android:layout_width="fill_parent" /> 
     <ListView android:id="@+id/ListView3" 
        android:choiceMode="multipleChoice" 
        android:layout_height="100dip" 
        android:layout_width="fill_parent" /> 

    </LinearLayout> 

</ScrollView> 
+0

고마워, 나는 이것을했지만 결과는 같았고 화면을 스크롤 할 수 없었다. – Hesam

0

을보십시오. 세 개의 XML 레이아웃을 만들고 머리글과 바닥 글을 사용하여 listview에 추가하십시오.

View headerView = View.inflate(this, R.layout.layout_name, null); 
    lv.addHeaderView(headerView); 

어댑터를 설정하기 전에 사용하십시오. lv는 listview입니다.

+0

한 번에 하나의 listview를 표시하고 있습니다. 제발 ... 제발 ... –

1

안드로이드가 어느보기로 스크롤해야하는지 모르기 때문에 listviewscrollview에 넣으면 작동하지 않으므로 작동하지 않습니다. visibilty 속성을 사용하려고 시도하면 HIDE에 작업 할보기가 있으며 VISIBLE을 새로 설정하십시오. 을 입력하거나 ListView을 사용하고 지침을 완료하고 시작한 후에 항목을 채우고 제거하십시오. 당신에게

1

이 방법을 사용을 도와 당신의 목록보기가있는 ScrollView 내부 스크롤 될 희망 : -

ListView lstNewsOffer.setAdapter(new ViewOfferAdapter(
          ViewNewsDetail.this, viewOfferList)); 
        getListViewSize(lstNewsOffer); 

void getListViewSize(ListView myListView) { 
    ListAdapter myListAdapter = myListView.getAdapter(); 
    if (myListAdapter == null) { 
     // do nothing return null 
     return; 
    } 
    // set listAdapter in loop for getting final size 
    int totalHeight = 0; 
    for (int size = 0; size < myListAdapter.getCount(); size++) { 
     View listItem = myListAdapter.getView(size, null, myListView); 
     listItem.measure(0, 0); 
     totalHeight += listItem.getMeasuredHeight(); 
    } 
    // setting listview item in adapter 
    ViewGroup.LayoutParams params = myListView.getLayoutParams(); 
    params.height = totalHeight 
      + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1)); 
    myListView.setLayoutParams(params); 
    // print height of adapter on log 
    Log.i("height of listItem:", String.valueOf(totalHeight)); 
} 
관련 문제