Warum wird FOOBARZ ganz unten angeordnet, wenn keine Elemente vorhanden sind layout_height="fill_parent"
, dh alle Elemente sind wrap_content für die Höhe?
<?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
Hunterp
quelle
quelle
hierarchyviewer
oder die Perspektive der Hierarchieansicht in Eclipse, um festzustellen, wo etwas schief geht: developer.android.com/guide/developing/debugging/…Antworten:
Aus dem
RelativeLayout
Dokument:Klassendokumentation
Welches ist genau Ihr Fall. RelativeLayout kann das nicht.
quelle
android:layout_height="200dp"
android:layout_alignParentBottom="true"
<ImageView>
, das dahinter steht.layout_height
vonmatch_parent
Für diejenigen, die nach einer Lösung suchen, wie ich es getan habe, können Sie
FrameLayout
stattdessen verwendenRelativeLayout
.Dann können Sie die Schwerkraft des beabsichtigten Objekts wie unten rechts unten einstellen
quelle
Sie haben das RelativeLayout auf
"wrap_content"
und die Textansicht auf festgelegtandroid:layout_alignParentBottom="true"
, sodass automatisch versucht wird, das RelativeLayout nach unten zu strecken. Verwenden Sie solche Abhängigkeiten nicht mit dem relativen Layout, da dies als "zirkuläre Abhängigkeiten" gelten kann.Aus den Dokumenten für RelativeLayout :
Versuchen Sie, Ihre Textansicht an etwas anderem als dem übergeordneten RelativeLayout auszurichten, aber achten Sie auch auf dieses Problem:
Zirkuläre Abhängigkeiten benötigen Hilfe beim genauen Code
Versuchen Sie alternativ, komplexere innere Layouts hinzuzufügen.
quelle
Gute Antworten. Wenn Sie
layout_alignParentBottom="true"
dieses Problem noch nicht haben und immer noch haben,android:background="@drawable/bkgnd"
achten Sie darauf, wo bkgnd ein großes Problem ist.quelle
Ich bin mir nicht sicher, warum der saubere und offensichtliche Weg, dies zu erreichen, noch nicht veröffentlicht wurde. Diese performante Lösung funktioniert für jede Ansicht MyView mit einer bekannten Höhe.
Wickeln Sie Ihre
RelativeLayout
mit Höhewrap_content
in ein FrameLayout:Beachten Sie nur, dass sich die Ansicht am unteren Rand des FrameLayout über Ihrem
RelativeLayout
Inhalt befindet. Sie müssen daher am unteren Rand des Layouts einen Abstand hinzufügen, um es aufzunehmen. Wenn Sie möchten, dass diese Ansicht eine variable Höhe hat, können Sie entweder FrameLayout in Unterklassen unterteilen, um den Code basierend auf der gemessenen Ansichtshöhe aufzufüllen, oder das FrameLayout einfach in vertikales LinearLayout ändern, wenn Sie sich keine Gedanken über die Leistung machen, dh es handelt sich nicht um eine Listenansicht Artikel, oder die Ansichten sind relativ leicht.quelle
Verwenden Sie keine Eigenschaften des Typs alight_Parent für die untergeordneten Ansichten
Sie können das Rahmenlayout anstelle von RelativeLayout mit der jeweiligen Schwerkraft verwenden
quelle