Ich habe eine, TextView
die ich am Ende einer Landschaftsaktivität anheften möchte, die LinearLayout
mit vertikal angeordneten Elementen verwendet wird.
Ich habe android:gravity="bottom"
die Textansicht festgelegt, aber sie befindet sich immer noch gerne direkt unter dem letzten Element des LinearLayout
genauen Inhalts, den ich nicht möchte.
Irgendwelche Vorschläge?
android
android-layout
android-linearlayout
Androider
quelle
quelle
android:gravity="bottom"
vonTextView
und fügen Sie es dem hinzuLinearLayout
. Ihr Problem wird gelöst.Antworten:
Update: Ich bekomme immer noch positive Stimmen zu dieser Frage, die immer noch die akzeptierte Antwort ist und die ich meiner Meinung nach schlecht beantwortet habe. Um sicherzustellen, dass die besten Informationen verfügbar sind, habe ich beschlossen, diese Antwort zu aktualisieren.
In modernem Android würde
ConstraintLayout
ich dies verwenden. Es ist performanter und unkomplizierter.<ConstraintLayout> <View android:id="@+id/view1" ...other attributes elided... /> <View android:id="@id/view2" app:layout_constraintTop_toBottomOf="@id/view1" /> ...other attributes elided... /> ...etc for other views that should be aligned top to bottom... <TextView app:layout_constraintBottom_toBottomOf="parent" />
Wenn Sie kein ConstraintLayout verwenden möchten, ist die Verwendung eines LinearLayout mit erweiterter Ansicht eine einfache und hervorragende Möglichkeit, den zusätzlichen Speicherplatz in Anspruch zu nehmen (siehe die Antwort von @Matthew Wills). Wenn Sie den Hintergrund einer der Ansichten über der Unteransicht nicht erweitern möchten, können Sie eine unsichtbare Ansicht hinzufügen, um den Platz einzunehmen.
Die Antwort, die ich ursprünglich gegeben habe, funktioniert, ist aber ineffizient. Ineffizienz mag für ein einzelnes Layout der obersten Ebene keine große Sache sein, aber es wäre eine schreckliche Implementierung in einem
ListView
oderRecyclerView
, und es gibt einfach keinen Grund, dies zu tun, da es bessere Möglichkeiten gibt, die ungefähr auf derselben Ebene liegen von Aufwand und Komplexität, wenn nicht einfacher.Nehmen Sie die Textansicht aus dem LinearLayout und fügen Sie das LinearLayout und die Textansicht in ein RelativeLayout ein. Fügen Sie das Attribut
android:layout_alignParentBottom="true"
der Textansicht hinzu. Mit allen Namespace- und anderen Attributen außer dem oben genannten Attribut entfernt:<RelativeLayout> <LinearLayout> <!-- All your other elements in here --> </LinearLayout> <TextView android:layout_alignParentBottom="true" /> </RelativeLayout>
quelle
Sie müssen eine Ihrer oberen Ansichten erweitern, um den verbleibenden Platz zu füllen, indem Sie sie festlegen
android:layout_weight="1"
. Dadurch wird Ihre letzte Ansicht nach unten verschoben.Hier ist eine kurze Skizze dessen, was ich meine:
<LinearLayout android:orientation="vertical"> <View/> <View android:layout_weight="1"/> <View/> <View android:id="@+id/bottom"/> </LinearLayout>
wo jede der Kinderhöhen ist
"wrap_content"
und alles andere ist"fill_parent"
.quelle
Ich denke, es wird eine perfekte Lösung sein:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Other views --> <Space android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <!-- Target view below --> <View android:layout_width="match_parent" android:layout_height="wrap_content"> </LinearLayout>
quelle
Sie sollten den Parameter Schwerkraft nicht in der Textansicht, sondern im linearen Layout nach unten setzen . So was:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="bottom|end"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Something"/> </LinearLayout>
quelle
Schritt 1: Erstellen Sie zwei Ansichten in einem linearen Layout
Schritt 2: Die erste Ansicht muss auf Android gesetzt sein: layout_weight = "1"
Schritt 3: Die zweite Ansicht wird automatisch nach unten geputtet
<LinearLayout android:id="@+id/botton_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <Button android:id="@+id/btn_health_advice" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
quelle
MÖGEN SIE DAS
<LinearLayout android:id="@+id/LinearLayouts02" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="bottom|end"> <TextView android:id="@+id/texts1" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="2" android:text="@string/forgotpass" android:padding="7dp" android:gravity="bottom|center_horizontal" android:paddingLeft="10dp" android:layout_marginBottom="30dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="50dp" android:fontFamily="sans-serif-condensed" android:textColor="@color/colorAccent" android:textStyle="bold" android:textSize="16sp" android:topLeftRadius="10dp" android:topRightRadius="10dp" /> </LinearLayout>
quelle
Sie können auch verwenden
android:layout_gravity="bottom"
für Ihre Textansicht
quelle
Versuche dies
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical" > <TextView android:id="@+id/textViewProfileName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>
quelle