2016-06-16 10 views
0

の内側に拡張ListViewコントロールとリニアレイアウトを置くためのコードははどのようにここにscrollview

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/llheadings"> 

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


     <ExpandableListView 
      android:id="@+id/myExpanded" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/llheadings" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="30dp" 
      android:layout_marginLeft="50dp" 
      android:childDivider="@android:color/transparent" /> 

     <LinearLayout 
      android:id="@+id/layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/myExpanded" 
      android:layout_marginLeft="50dp" 
      android:orientation="vertical"> 

     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 

を表示するために使用していますされているが、何が起こるかであるExpandableListView高さが唯一の項目をwrappeedています。私は(:アンドロイド:元layout_heightは= "100dp")hieghtを設定した場合and here is the snapshot

はその後exapandapbleリストビューは、ちょうど適切なスクロールを行うためのExpandableListInScrollHelper.javaクラスを作成し、法の下に追加unscrollable

+0

この目的には 'nestedscrollview'を使う必要があります。スクロールビューは内部レイアウトのスクロールを無効にしました –

+0

これはうまくいきましたが、wrap_contentとしてexpandablelistviewに高さを設定した場合、明示的に拡張可能なリストビューの項目が動的に変更されているため –

+0

はい、dpで高さを手動で設定する必要があります。 –

答えて

0

になります。

public static void getExpandableListViewSize(ExpandableListView 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)); 
} 

さて、

mExpandableList.setAdapter(mAdapter); 
ExpandableListInScrollHelper.getExpandableListViewSize(mExpandableList); 

そして今、あなたの問題が解決されるように設定されたアダプタの下に1行のコードを追加します!!!