2010-10-22 6 views
1

Sur mon écran j'ai une vue de liste et un bouton. ma liste a comme 8 article. Je voudrais que mon écran défile si ces deux éléments ne tiennent pas dedans. Je ne veux pas que ma liste ait défilement mais la disposition complète comprenant le bouton de liste de &. Si j'utilise la mise en page ci-dessous, elle ne s'affiche que sur un élément de la liste et je dois faire défiler la liste pour aller à l'élément suivant.liste à l'intérieur scrollview

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" > 
<LinearLayout 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

     <ListView android:id="@android:id/list" 
      android:layout_height="wrap_content" android:layout_width="fill_parent" 
      android:background="@drawable/round_background" /> 

     <Button android:text="Search" android:id="@+id/carSearchButton" 
      android:layout_gravity="center_horizontal" android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
</LinearLayout> 
</ScrollView> 
+0

Vous pouvez essayer ce code [non-scrollable-listview-inside-scrollview] (http://stackoverflow.com/questions/18813296/non-scrollable-listview-inside-scrollview/24629341#24629341) –

Répondre

1

Scythe de type répond à ma question mais je voulais plus d'un contrôle en dessous de la liste aussi sur un autre écran je voulais 2 listes. Donc, pour que la barre de défilement fonctionne avec la vue de liste, j'ai dû fixer la hauteur de la liste.

2

Vous ne pouvez pas mettre un ListView dans un ScrollView. De GridView, ou n'importe quelle vue qui gère le défilement sur le même axe que le ScrollView. De cette façon, le framework ne sait pas quelle vue doit gérer l'événement de défilement. Cette disposition ne produira pas d'erreur lorsque vous la compilerez, mais elle ne fonctionnera pas correctement.

Ce que vous devez faire ici: vider le ScrollView externe, vous n'en avez pas besoin. Utilisez uniquement un ListView et ajoutez le bouton à ListView, en utilisant .addFooter(), c'est le moyen le plus simple. De cette façon, votre bouton apparaîtra sous la forme d'un élément de liste, mais vous n'aurez pas à vous tromper avec un adaptateur personnalisé.

0

Si votre problème est avec ListView ne défilant pas dans ScrollView, voici la solution pour gérer cela. Implémentez votre propre listview en étendant la classe ListView et implémentez la méthode ci-dessous. Faites-moi savoir si cela résout votre problème?

@Override public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: // Disallow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: // Allow ScrollView to intercept touch events. this.getParent().requestDisallowInterceptTouchEvent(false); break; } super.onTouchEvent(ev); return true; }

+0

Dans ce cas , si je mets les deux faux, désactivera-t-il le défilement de l'écran lors du défilement sur la liste? – HimanshuR