Pourquoi FOOBARZ est-il disposé tout en bas alors qu'aucun élément n'est layout_height="fill_parent"
en d'autres termes, tous les éléments sont wrap_content pour la hauteur?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/feed_u"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_marginLeft="5dip"
android:scaleType="centerCrop"
android:drawableTop="@android:drawable/presence_online"
android:text="U" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/feed_u">
<ImageView
android:id="@+id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_minus" />
<ImageView
android:id="@+id/feed_ha"
android:layout_toLeftOf="@id/feed_h"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/btn_plus" />
<TextView
android:id="@+id/feed_t"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title">
</TextView>
<TextView
android:id="@+id/feed_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Band"
android:layout_below="@id/feed_t">
</TextView>
<TextView
android:id="@+id/feed_s"
android:layout_below="@id/feed_a"
android:text="S"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
<TextView
android:id="@+id/feed_tm"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="FOOBARZ"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
</RelativeLayout>
</RelativeLayout>
android
android-layout
chasseur
la source
la source
hierarchyviewer
ou la perspective Hierarchy View dans Eclipse pour déterminer où les choses vont mal: developer.android.com/guide/developing/debugging/...Réponses:
Du
RelativeLayout
doc:Documentation de classe
C'est exactement votre cas. RelativeLayout ne peut pas faire cela.
la source
android:layout_height="200dp"
. Cela vous permettrait d'utiliserandroid:layout_alignParentBottom="true"
<ImageView>
qui se trouve derrière.layout_height
dematch_parent
Pour ceux qui recherchent une solution à ce problème, comme je l'ai fait, vous pouvez utiliser à la
FrameLayout
place deRelativeLayout
.Ensuite, vous pouvez définir la gravité de l'objet prévu en bas à droite comme ci-dessous
la source
Vous avez défini le RelativeLayout sur
"wrap_content"
et le TextView surandroid:layout_alignParentBottom="true"
, il essaie donc automatiquement d'étirer le RelativeLayout vers le bas. N'utilisez pas de telles dépendances avec Relative Layout, car elles peuvent être considérées comme des "dépendances circulaires".À partir de la documentation pour RelativeLayout :
Essayez d'aligner votre TextView sur autre chose que le RelativeLayout parent, mais faites également attention à ce problème: les
dépendances circulaires, ont besoin d'aide avec le code exact
Vous pouvez également essayer d'ajouter des dispositions internes plus sophistiquées.
la source
Bonnes réponses. Maintenant, si vous n'avez pas
layout_alignParentBottom="true"
encore ce problème,android:background="@drawable/bkgnd"
faites attention à l' endroit où bkgnd est un gros problème.la source
Je ne sais pas pourquoi la manière claire et évidente d'accomplir cela n'a pas encore été publiée. Cette solution performante fonctionne pour n'importe quel View MyView avec une hauteur connue.
Enveloppez votre
RelativeLayout
hauteurwrap_content
dans un FrameLayout:Notez simplement que la vue en bas de FrameLayout sera au-dessus de votre
RelativeLayout
contenu, vous devrez donc ajouter un rembourrage au bas de cette mise en page pour l'adapter. Si vous voulez que cette vue soit à hauteur variable, vous pouvez soit Sous-classe FrameLayout pour ajouter un remplissage dans le code en fonction de la hauteur de vue mesurée, soit simplement changer le FrameLayout en LinearLayout vertical si vous n'êtes pas préoccupé par les performances, c'est-à-dire que ce n'est pas une vue de liste. élément, ou les vues sont relativement légères.la source
N'utilisez pas les propriétés de type alight_Parent avec les vues enfants
Vous pouvez utiliser la disposition du cadre au lieu de RelativeLayout avec la gravité respective
la source