ExpandableListView à l'intérieur d'un scrollview
Dans mon application je veux faire une page qui ont ExpandableListView et au-dessous de lui une Case à cocher.
Mon problème est que mon ExpandableListView est trop gros et faire de la Case de la page.
Sur les petits écrans n'est pas visible à tous.
J'ai essayé de mettre ExpandableListView à l'intérieur de scrollview mais sa ne fonctionne pas.
Est-il un moyen de rendre mon design?
Voici mon code et une capture d'écran.
Code XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/White" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="15sp"
android:text="In this page you can save a group of exercise under one routine."
android:textColor="@color/Black"
android:textSize="20sp" />
<ExpandableListView
android:id="@+id/instructionsExView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="15sp" >
</ExpandableListView>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/instructionsExView"
android:layout_marginTop="15sp"
android:text="If you want to open the instruction again check 'need help?'"
android:textColor="@color/Black"
android:textSize="20sp" />
<CheckBox
android:id="@+id/checkInstructions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="16dp"
android:checked="false"
android:text="dont show again when opening the page"
android:textColor="@color/Black" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
Capture d'écran:
EDIT:
Utilisation
MergeAdapter
: github.com/commonsguy/cwac-mergeOriginalL'auteur dasdasd | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
dans votre "onCreate" méthode d'écriture: "setListViewHeight(expListView)" après "expListView.setAdapter(listAdapter)", puis définissez OnGroupClickListener pour votre extensible affichage de la liste comme ci-dessous:
méthodes utilisées:
maintenant u êtes bon pour aller.
ce code est utile lorsque ExpandableListView besoin d'avoir attribut layout_height="wrap_content". Avec le code de la vue s'envelopper de contenu aways correcte.
La deuxième fonction, qui fonctionne bien, mais le premier n'est pas de travail pour moi, c'est à dire avant que tout le groupe est cliqué, la hauteur de la expandablelistview n'est pas correct. Quelqu'un a pu résoudre ce problème?
avez-vous utilisé "setListViewHeight(expListView)" après "expListView.setAdapter(listAdapter)" dans votre méthode onCreate? par la façon dont je pense que c'est mieux de ne pas utiliser expandablelistview et le scrollview ensemble, essayez d'utiliser expandablelistviews et de personnaliser son premier et du dernier élément.
Cette solution fonctionne vraiment bien en termes de défilement, mais il ne parvient pas à calculer correctement la hauteur de la ExpandableListView lorsqu'il est chargé pour la première fois. En cliquant sur un groupe qui, il a donc besoin d'une petite touche d'y arriver.
OriginalL'auteur Dmila Ram
@Dmila Ram`s réponse, j'ai été en mesure de le faire.
Dans mon cas, j'initialise et de remplir la
ExpandableListView
dans leonCreate
méthode comme suit:Avis que j'ai développer chaque groupe. Après que j'appelle
setListViewHeight(expandableListView);
Cette méthode est responsable pour le calcul de la hauteur de la
ExpandableListView
lorsqu'il est créé pour la première fois.Voici le code:
C'est vraiment pas nécessaire d'avoir des groupes élargis, au lieu de cela il nous suffit de faire une boucle par les articles et les ajouter dans le calcul de la hauteur totale.
Ceci tous les widgets dans la
ScrollView
de défilement et il sera également montrer l'ExpandableListView
correctement.Puis nous avons aussi besoin de cette méthode, assurez-vous qu'en cliquant sur les groupes de calcul de la hauteur:
C'est assez bien, puis il fonctionne très bien, mais cette solution peut être optimisé encore plus loin.
OriginalL'auteur Apostrofix
vous ne pouvez pas utiliser listview à l'intérieur de défilement de la vue ,de sorte que vous devriez utiliser de défilement de la vue et ajouter les lignes que les points de vue de façon dynamique.
OriginalL'auteur jamil
Vous n'avez pas besoin de plus d'un RelativeLayout, parce que expandablelistview devrait être entre deux éléments (dans votre cas), ces deux éléments vont être les premières avec parentTop et parentBottom, le reste sera positionné à jouer avec au-dessus/en-dessous.
Et c'est, regardez la parentBottom à l'intérieur de la case. Les prochains articles seront peints à l'égard de la case à cocher rechercher les attributs de la prochaine éléments. Parce que voyez-vous ExpandableListView dernière ne signifie pas qu'il est le dernier à s'afficher à l'écran.
Son une sorte de travail. Parce que ExpandableListView maintenant développer dans est petite zone. Je veux qu'il permettra d'élargir la taille de l'écran. Voir mon montage et la capture d'écran.
Je ne vous comprends pas, votre premier problème a été mon problème est que Mon ExpandableListView est trop gros et faire de la Case de la page", mais maintenant vous expandableListView occupe moins d'espace (parce que maintenant la case à cocher est sur la page). À la recherche de votre dernière screenshoot peut-être vous voulez afficher la case de texte et seulement après avoir appuyé sur le bouton ok? Spécifiez s'il vous plaît plus.
Je veux le ExpandableListView à obtenir de l'espace en tant que de besoin, si le texte est long, il va remplir la page. Et je veux que je peut faire défiler vers le bas sur la ExpandableListView et d'arriver à mon case.
OriginalL'auteur AlexBcn
Vous pouvez utiliser le code ci-dessous pour obtenir cette chose. J'ai utilisé
ListView
vous pouvez le remplacer avecExpandableListView
J'ai vérifié le code ci-dessus, avec près de 50 listitem valeur et testé sur un très petit écran de l'appareil et il fonctionne très bien.
J'ai vérifié avec
ExpandableListView
et il fonctionne très bien pour moi.stackoverflow.com/questions/34269075/... consulter ce lien et de donner une solution merci @dasdasd
OriginalL'auteur Megha