Wie man die Ansichten am unteren Rand des Bildschirms ausrichtet?

Hier ist mein Layout-Code;

<?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"> <TextView android:text="@string/welcome" android:id="@+id/TextView" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> <LinearLayout android:id="@+id/LinearLayout" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="bottom"> <EditText android:id="@+id/EditText" android:layout_width="fill_parent" android:layout_height="wrap_content"> </EditText> <Button android:text="@string/label_submit_button" android:id="@+id/Button" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </LinearLayout> </LinearLayout> 

Was das so aussieht, ist auf der linken Seite und wie ich es aussehen möchte, ist auf der rechten Seite.

  • Bibliothek mit Bündel Abhängigkeiten (Fett aar)
  • JSON `Datum (...)` zu `java.Util.Date` mit` org.json`
  • Verwenden eines Puffers mit Android AudioTrack
  • Löschen Aktivität zurück Stapel
  • Speichern von verschachtelten Fremdobjekten mit ORMLite auf Android
  • ShouldOverrideUrlLoading in WebView für Android läuft nicht
  • Android Layout - Tatsächlich (links) und gewünscht (rechts)

    Die offensichtliche Antwort ist, die TextView auf fill_parent auf Höhe zu setzen, aber dies bewirkt, dass kein Platz für die Schaltfläche oder Eingabefeld verlassen wird. Im Grunde das Problem ist, dass ich die submit-Taste und die Texteingabe zu einer festen Höhe an der Unterseite und die Textansicht, um den Rest des Raumes zu füllen, ähnlich in der horizontalen Linear-Layout Ich möchte die submit-Taste, um seinen Inhalt zu wickeln und Für die Texteingabe, um den Rest des Raumes zu füllen.

    Wenn das erste Element in einem linearen Layout zu füllen ist, ist es genau so, dass es keinen Platz für andere Gegenstände gibt, wie bekomme ich einen Artikel, der zuerst in einem linearen Layout ist, um jeden Platz aus dem Minimum zu füllen, der von dem Rest benötigt wird Die Gegenstände im Layout?

    BEARBEITEN:

    Relative Layouts waren ja die Antwort – danke!

      <?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="fill_parent"> <TextView android:text="@string/welcome" android:id="@+id/TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> </TextView> <RelativeLayout android:id="@+id/InnerRelativeLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <Button android:text="@string/label_submit_button" android:id="@+id/Button" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <EditText android:id="@+id/EditText" android:layout_width="fill_parent" android:layout_toLeftOf="@id/Button" android:layout_height="wrap_content"> </EditText> </RelativeLayout> </RelativeLayout> 

  • CSS3 linear-gradient funktioniert nicht auf android.
  • wie man arrayList (Objekt) serialisieren / deserialisieren
  • Ist es empfehlenswert, die Ansicht für null mit jedem findViewById-Aufruf zu überprüfen?
  • Capture Android-Bildschirm und erstellen Sie Video programmgesteuert
  • Statusleiste Farbe nicht angezeigt - 5.0 Lollipop Android Studio: (AppCompat-v7: r21)
  • So erstellen Sie eine geschlossene (kreisförmige) ListView?
  • 17 Solutions collect form web for “Wie man die Ansichten am unteren Rand des Bildschirms ausrichtet?”

    Ich denke, du solltest ein relatives Layout ausprobieren.
    Wenn Sie ein relatives Layout haben, das den ganzen Bildschirm füllt, sollten Sie in der Lage sein, android:layout_alignParentBottom zu verwenden android:layout_alignParentBottom , um die Schaltfläche am unteren Rand des Bildschirms zu verschieben.

    Wenn Ihre Ansichten an der Unterseite nicht in einem relativen Layout gezeigt werden, dann vielleicht das Layout über es nimmt den ganzen Raum. In diesem Fall können Sie die Ansicht, die an der Unterseite sein sollte, zuerst in Ihrer Layout-Datei und positionieren Sie den Rest des Layouts über den Ansichten mit android:layout_above . Dies ermöglicht es der unteren Ansicht, so viel Platz zu nehmen, wie es braucht und der Rest des Layouts kann den ganzen Rest des Bildschirms füllen.

    In einem ScrollView funktioniert das nicht, da das RelativeLayout dann alles überschneiden würde, was sich im ScrollView am unteren Rand der Seite befindet.

    Ich habe es mit einem dynamisch dehnenden FrameLayout :

     <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:fillViewport="true"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <!-- content goes here --> <!-- stretching frame layout, using layout_weight --> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <!-- content fixated to the bottom of the screen --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- your bottom content --> </LinearLayout> </LinearLayout> </ScrollView> 

    Sie können Ihr ursprüngliches lineares Layout beibehalten, indem Sie das relative Layout innerhalb des linearen Layouts verschachteln:

     <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="welcome" android:id="@+id/TextView" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="submit" android:id="@+id/Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"> </Button> <EditText android:id="@+id/EditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toLeftOf="@id/Button" android:layout_alignParentBottom="true"> </EditText> </RelativeLayout> </LinearLayout> 

    Die Antwort oben (von Janusz) ist ganz richtig, aber ich persönlich fühle mich nicht 100% confortable mit RelativeLayouts, also ziehe ich es vor, einen 'filler', leere TextView, wie folgt vorzustellen:

     <!-- filler --> <TextView android:layout_height="0dip" android:layout_width="fill_parent" android:layout_weight="1" /> 

    Vor dem Element, das am unteren Rand des Bildschirms sein sollte.

    Das funktioniert auch.

     <LinearLayout android:id="@+id/linearLayout4" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_below="@+id/linearLayout3" android:layout_centerHorizontal="true" android:orientation="horizontal" android:gravity="bottom" android:layout_alignParentBottom="true" android:layout_marginTop="20dp" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> 

    Gravity = "bottom", um LinearLayout-Elemente nach unten zu schweben

    Sie können dies auch mit einem LinearLayout oder einem ScrollView machen. Manchmal ist es einfacher, dann ein RelativeLayout zu implementieren. Das einzige, was Sie tun müssen, ist, die folgende Ansicht hinzuzufügen, bevor die Ansichten, die Sie an den unteren Rand des Bildschirms ausrichten möchten:

     <View android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /> 

    Dies schafft eine leere Ansicht, füllt den leeren Raum und drückt die nächsten Ansichten auf den unteren Rand des Bildschirms.

    Sie müssen nicht einmal das zweite relative Layout in der ersten nisten. Verwenden Sie einfach den android:layout_alignParentBottom="true" in der Schaltfläche und EditText .

    Nach der eleganten Lösung von Timores habe ich festgestellt, dass das folgende eine vertikale Füllung in einem vertikalen LinearLayout und eine horizontale Füllung in einem horizontalen LinearLayout erzeugt:

     <Space android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> 

    Wenn du nicht viele Änderungen machen willst, dann könntest du einfach sagen:

     android:layout_weight="1" 

    Für die TextView mit ID als @+id/TextView ie

     <TextView android:text="@string/welcome" android:id="@+id/TextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> </TextView> 

    Erstellen Sie sowohl HEADER als auch FOOTER, hier ist ein Beispiel

    [Layout XML]

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/backgroundcolor" tools:context=".MainActivity"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="40dp" android:background="#FF0000"> </RelativeLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:background="#FFFF00"> </RelativeLayout> </RelativeLayout> 

    [ Bildschirmfoto ]

    Bildbeschreibung hier eingeben

    Hoffe das ist hilfreich. Vielen Dank!!

    Verwenden Sie unten Code-Ausrichtung-Taste zu bottem seine Arbeit

      <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn_back" android:layout_width="100dp" android:layout_height="80dp" android:text="Back" /> <TextView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.97" android:gravity="center" android:text="Payment Page" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submit"/> </LinearLayout> </LinearLayout> 

    Verwenden Sie android:layout_alignParentBottom="true" in Ihrem <RelativeLayout> .

    Das wird definitiv helfen.

    Für den Fall, dass Sie eine Hierarchie wie folgt haben:

     <ScrollView> |-- <RelativeLayout> |-- <LinearLayout> 

    Zuerst wenden Sie android:fillViewport="true" zum ScrollView und dann android:layout_alignParentBottom="true" zum LinearLayout .

    Das hat für mich perfekt gearbeitet.

     <ScrollView android:layout_height="match_parent" android:layout_width="match_parent" android:scrollbars="none" android:fillViewport="true"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:id="@+id/linearLayoutHorizontal" android:layout_alignParentBottom="true"> </LinearLayout> </RelativeLayout> </ScrollView> 

    Sie können einfach Ihre Top-Child-Ansicht (die TextView @ + id / TextView ) ein Attribut: android:layout_weight="1" .

    Dies zwingt alle anderen Elemente unten auf den Boden.

    Ich habe die Lösung benutzt, die Janusz gepostet hat, aber fügte die letzte Ansicht hinzu, da der obere Teil meines Layouts ein ScrollView war. Das ScrollView wird teilweise versteckt, wenn es mit Inhalt wächst. Verwenden von Android: paddingBottom auf der letzten Ansicht hilft, alle Inhalte in der ScrollView zu zeigen.

    Dies kann mit linearem Layout auch getan werden Nur bieten Height = 0dp und Gewicht = 1 auf das Layout oben und die, die Sie wollen in der unteren nur schreiben Höhe = Wrap Inhalt und kein Gewicht. Was es tut, ist es bietet Wrap-Content für das Layout (die, die Ihre Bearbeiten Text und Schaltfläche enthält) und dann die, die Gewicht nimmt den Rest des Layouts. Ich habe das zufällig entdeckt.

    Für einen Fall wie folgt immer RelativeLayouts. Ein LinearLayout ist nicht für eine solche Verwendung gedacht.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/db1_root" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- Place your layout here --> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_gravity="bottom" android:orientation="horizontal" android:paddingLeft="20dp" android:paddingRight="20dp" > <Button android:id="@+id/setup_macroSavebtn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Save" /> <Button android:id="@+id/setup_macroCancelbtn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Cancel" /> </LinearLayout> </RelativeLayout> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.