match_parent de la propriété pour les enfants dans un RelativeLayout
En bref, est-il possible de dire à un enfant dans un RelativeLayout
de toujours correspondre à la hauteur de la RelativeLayout
indépendamment de la façon dont d'autres enfants dans la même RelativeLayout
se comporter? En bref, c'est tout. Les détails ci-dessous.
Ce que je suis en train de réaliser est un ListView
ligne avec au moins trois points de vue, et l'un de ces points de vue serait une sorte de bande sur le côté droit de l'entrée de la liste (le rouge de la vue ci-dessous). Le problème, je vais avoir, c'est qu'il y a un TextView
sur le côté gauche, et selon la façon dont beaucoup de texte que j'ai, la bande à ne pas remplir toute la mise en page. C'est très clairement expliqué par les images ci-dessous.
ListView
élément de mise en page:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<View
android:id="@+id/bottom_line"
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_alignParentBottom="true"
android:background="#fc0" />
<!-- Why match_parent does not work in view below? -->
<View
android:id="@+id/stripe"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:background="#f00" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/stripe"
android:text="This is a very long line, meant to completely break the match_parent property of the box at right"
style="?android:textAppearanceLarge"/>
</RelativeLayout>
Résultat:
Réglage de la bande et de la racine de la hauteur de match_parent
ne fait aucune différence. Je l'ai fait.
Répéter la question, je veux que la bande rouge, remplissez toujours le parent verticalement. Vous pouvez voir la bande n'est pas de s'aligner sur le haut de la racine.
Une remarque: l'exemple ci-dessus est le plus simple, autonome exemple je pense. C'est juste un ListActivity
avec un anonyme ArrayAdapter
peuplée par une statique String
tableau. Le code correspondant dans onCreate
est à plus de 8 lignes, donc pas de soucis là. C'est vraiment la mise en page. D'ailleurs, j'ai ce travail avec imbriqué LinearLayout
s déjà, mais je vais essayer de réduire la profondeur de ma présentation de la structure un peu, si possible. LinearLayout
fonctionne très bien, comme prévu.
- RelativeLayouts ne fonctionnent pas avec le poids de propriétés (à l'exception de la mère de la RelativeLayout lui-même...).
Vous devez vous connecter pour publier un commentaire.
J'ai eu la même exigence et ma solution a été d'aligner le haut de la bande rouge à la mère du haut, et le bas de la bande vers le bas de l'affichage de texte sur la gauche. La hauteur dans ce cas, devient sans objet. Vous pouvez soit utiliser
wrap_content
oumatch_parent
.TextView
une bande, cette solution ne fonctionnera pas si nous avons le contraire: si le texte est plus petite à la verticale de la bande (dans ce cas, la bande de contenu seront découpées). Encore une fois, je devrais avoir rédigé mieux (comme dans: la bande pourrait être faite d'autres points de vue en plus de la Vue. Pas "peu importe", comme l'implique.Suffit de mettre votre principale
RelativeLayout
à l'intérieur d'unLinearLayout
, puis le calcul de la pension Vues hauteur sera correct . J'ai eu le même problème et il a travaillé pour moi.Essayez ceci:
L'aligner en haut et en bas de la rouge vue est le même que textview maintenant.
C'est un problème ennuyeux et vous avez besoin de mettre le RelativeLayout à l'intérieur d'un LinearLayout
Ajout d'un écouteur à la liste de l'élément de support de sorte que chaque fois lors de changement de titulaire en hauteur, réglez la hauteur de l'enfant.
i1
est pour le haut, eti3
est pour le fond.