674 Stimmen

Wie kann ich die Ansichten am unteren Bildschirmrand ausrichten?

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>

Auf der linken Seite sehen Sie, wie es aussieht, und auf der rechten Seite, wie ich es haben möchte.

Android Layout - Actual (Left) and Desired (Right)

Die offensichtliche Antwort ist, die TextView auf fill_parent on height zu setzen, aber das führt dazu, dass kein Platz mehr für die Schaltfläche oder das Eingabefeld bleibt.

Im Wesentlichen geht es darum, dass ich möchte, dass die Schaltfläche "Senden" und der Texteintrag eine feste Höhe am unteren Rand haben und die Textansicht den restlichen Platz ausfüllt. In ähnlicher Weise in der horizontalen linearen Layout möchte ich die Schaltfläche "Senden", um seinen Inhalt zu umbrechen und für den Texteintrag, um den Rest des Raumes zu füllen.

Wenn das erste Element in einem linearen Layout die Anweisung fill_parent erhält, tut es genau das und lässt keinen Platz für andere Elemente. Wie bringe ich ein Objekt, das das erste in einem linearen Layout ist, dazu, den gesamten Platz zu füllen, abgesehen von dem Minimum, das die übrigen Objekte im Layout benötigen?


Relative Layouts waren tatsächlich die Antwort:

    <?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>

3voto

Prince Punkte 19654

Falls Sie eine Hierarchie wie diese haben:

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

Erstens: Anwendung android:fillViewport="true" a la ScrollView und dann anwenden android:layout_alignParentBottom="true" a la LinearLayout .

Das hat bei mir perfekt funktioniert.

<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>

3voto

IgorGanapolsky Punkte 24581

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

Dadurch werden alle anderen Elemente darunter nach unten verschoben.

1voto

jeremyvillalobos Punkte 1773

Ich habe die Lösung verwendet, die Janusz gepostet hat, aber ich habe Padding zur letzten View hinzugefügt, da der obere Teil meines Layouts eine ScrollView war.

Die ScrollView wird teilweise ausgeblendet, wenn sie mit Inhalt wächst. Verwendung von android:paddingBottom in der letzten Ansicht hilft, den gesamten Inhalt in der ScrollView anzuzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X