6
votes

Android Layout_Width & Layout_Height, comment ça marche?

J'essaie de créer une interface, où deux boutons ou plus seront affichés à l'utilisateur, si un bouton est cliqué, certaines dispositions lui seront affichées. J'utilise le slidingdrawer fort> à cette fin.

Eh bien, je suis confus par layout_width & Layout_height propriétés strong>. P>

Si je définis les propriétés comme Ci-dessous seulement, la "poignée 1" est affichée à l'écran. P>

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

    <SlidingDrawer android:id="@+id/slidingDrawer1"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:handle="@+id/handle1"
            android:content="@+id/content1">
                <Button android:text="Handle 1" android:layout_height="wrap_content"
                        android:layout_width="fill_parent" android:id="@+id/handle1"></Button>
                <LinearLayout android:id="@+id/content1"
                        android:layout_width="fill_parent" android:layout_height="wrap_content"
                        android:orientation="vertical" android:gravity="center"
                        android:background="#FF444444">
                        <Button android:text="Handle 1 Item 1" android:layout_height="wrap_content"
                                android:layout_width="wrap_content" android:id="@+id/item1"></Button>
                </LinearLayout>
    </SlidingDrawer>

    <SlidingDrawer android:id="@+id/slidingDrawer2"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:handle="@+id/handle2"
            android:content="@+id/content2">
                <Button android:text="Handle 2" android:layout_height="wrap_content"
                        android:layout_width="fill_parent" android:id="@+id/handle2"></Button>
                <LinearLayout android:id="@+id/content2"
                        android:layout_width="fill_parent" android:layout_height="wrap_content"
                        android:orientation="vertical" android:gravity="center"
                        android:background="#FF444444">
                        <Button android:text="Handle 2 Item 1" android:layout_height="wrap_content"
                                android:layout_width="wrap_content" android:id="@+id/item2"></Button>
                </LinearLayout>
    </SlidingDrawer>     
</LinearLayout>


2 commentaires

Avez-vous vérifié La documentation ? C'est assez clair imho.


Bonne question. J'étais confus à ce sujet il y a quelques mois lorsque j'ai commencé. Donnez-le quelques jours et vous aurez le pendre.


3 Réponses :


6
votes

Le layout_width et Layout_height Les propriétés d'une vue sont destinées à être utilisées par son conteneur parent. Certains conteneurs ignorent l'une ou les deux; la plupart les honorent. Vous devez consulter la documentation du conteneur (dans votre cas, SlidingDrawer) pour comprendre comment les valeurs seront utilisées.

Vous n'êtes pas montrant la complète Main.xml, il est donc difficile de dire exactement ce qui ne va pas. Cela aiderait également si vous avez posté une image de ce qui ne va pas.

Modifier

Après avoir vu votre mise en page complète, je pense que le problème de base ici est que vous utilisez une linearlayout pour contenir les SlidingDrawers. Comme le Docs pour SlidingDrawer Notez, ils doivent être dans une framayout ou une relativation (en fait , tout conteneur qui permet à plusieurs vues de s'asseoir les uns sur les autres).

Une autre possibilité est que le deuxième Slidydrawer est mis directement sous la première. Essayez de modifier la taille de la deuxième touche (par exemple, faites plus de texte) et voyez si elle protège de chaque côté du bouton 1.


1 commentaires

J'ai fourni la complète Main.xml, veuillez consulter ma question.



4
votes

Fill_Parent = Match_Parent, et cela signifie qu'il prend la largeur ou la hauteur (qui soit spécifié de la part de la propriété comme) du conteneur "PARENT"

WraP_Content signifie que la hauteur ou la largeur prend la hauteur ou la largeur de "enfant"

Vous voulez utiliser des poids au lieu d'utiliser match_parent ou enveloppant_content typiquement.

Lorsque vous utilisez des poids, vous souhaitez définir la largeur sur 0 dP. < Pré> xxx


2 commentaires

Je sais cela, mais regardez mon XML fourni, pourquoi il montre juste "gérer 1", si la règle ci-dessus est appliquée, il doit montrer à la fois la "poignée 1" et "poignée 2".


Vous remplissez le parent deux fois. Essayez d'utiliser des poids au lieu de régler la largeur de mise en page à Fill_Parent. Gardez également à l'esprit que Fill_Parent est obsolète; Utilisez Match_Parent à la place. J'ai édité ma réponse afin que je puisse vous montrer un exemple de cela.



0
votes

Je pense que vous essayez d'ajouter 2 tiroir coulissant.

La taille de la taille du SlidingDrawer définit la quantité d'espace que le contenu occupera une fois que SlidingDrawer devrait généralement utiliser match_parent pour les deux dimensions dans ce cas, un chevauchement d'une autre pour que vous puissiez Impossible de voir le gestionnaire 2.

Si vous définissez une visibilité "GONE" de la première slidingdrawer, vous pouvez voir l'autre.

Mise à jour

hi,

Veuillez essayer ce code peut vous aider xxx

xxx


1 commentaires

Oui, je veux ajouter plus d'un tiroir coulissant, comme c'est clair de ma question. Si je fixe la visibilité pour aller, le premier tiroir coulissant deviendra invisible.