1

Ici j'utilise scrollview dans ma linearlayout.Mais je veux inclure une autre listview dans ma scrolllay linearlayout. Scrollview prend en charge un seul enfant.Je sais que l'intérieur de scrollview listview ne fonctionne pas.Mais est-il une autre option pour utiliser listview.Je veux faire défiler tout le contenu.comment résoudre scrollview listview dans linearlayout dans android

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView 
     android:id="@+id/widget54" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     > 
     <LinearLayout 
      android:layout_width="310px" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      > 
      <Button 
       android:id="@+id/button1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Button 1" 
       /> 
      <Button 
       android:id="@+id/button2" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Button 2" 
       /> 
      <Button 
       android:id="@+id/button3" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Button 3" 
       /> 
      <EditText 
       android:id="@+id/txt" 
       android:layout_width="fill_parent" 
       android:layout_height="300px" 
       /> 
      <Button 
       android:id="@+id/button4" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Button 4" 
       /> 

     </LinearLayout> 
    </ScrollView> 
+0

Vous pouvez voir ceci: http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a -scrollview-without-it-effondrement – user3682351

Répondre

1

ListView à l'intérieur ScrollView est presque sûr de ne pas fonctionner.

La seule méthode que je peux penser, est que vous avez seulement un listview dans l'interface, et, créez un adaptateur personnalisé pour elle:

public class HeaderAdapter{ 
    private Adapter mAdapter; // this adapter is the adapter that you will normally have, for your listview 

    getViewTypeCount(){ 
     return mAdapter.getViewTypeCount() + 1; 
    } 

    getView(int pos, View convertView){ 
     // Handle only the first position, othervise, let mAdapter return 
     if (pos!=0) return mAdapter.getView(pos-1, convertView); 

     // 
     View v = LayoutInflater.inflate(R.layout.other_linear_layout); 
     // Bind the v if necessary 

     return v; 
    } 
} 

Au-dessus est juste un exemple, une idée est que vous traitez le reste du contenu (linearlayouts, boutons, edittext etc) comme la ligne "Header" de l'adaptateur.

0

Si vous avez un seul ListView dans ScrollView, vous pouvez ajouter un attribut à ScrollView dans le format XML: android:fillViewport="true".

Cela va étendre tout le contenu de ListView. Sinon, si vous avez plus d'un ListView ou GridView dans ScrollView, vous devez créer une liste customListView.

Prolonge ListView et @Override onMeasure:

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