如何在屏幕底部對齊視圖?

這是個人佈局代碼; android

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

這看起來像在左邊,我但願它看起來像在右邊。 app

Android佈局 - 實際(左)和指望(右)

顯而易見的答案是在高度上將TextView設置爲fill_parent,但這不會爲按鈕或輸入字段留下任何餘地。 本質上問題是我但願提交按鈕和文本條目在底部是固定高度,文本視圖填充剩餘的空間,相似於水平線性佈局我但願提交按鈕包裝其內容和用於填充剩餘空間的文本條目。 佈局

若是線性佈局中的第一個項目被告知fill_parent它就是這樣作的,沒有其餘項目的空間,我如何得到一個線性佈局中的第一個項目來填充除了其他項目所需的最小空間以外的全部空間佈局中的項目? spa

編輯: code

相對佈局確實是答案 - 謝謝! xml

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

#1樓

您也可使用LinearLayout或ScrollView執行此操做。 有時,實現RelativeLayout更容易。 您惟一須要作的就是想要對齊到屏幕底部的視圖以前添加如下視圖: utf-8

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

這將建立一個空視圖,填充空白區域並將下一個視圖推送到屏幕底部。 get


#2樓

<RelativeLayout>使用android:layout_alignParentBottom="true"string

這確定會有所幫助。 it


#3樓

這也能夠經過線性佈局來完成。只需在上面的佈局中提供Height = 0dp和weight = 1,在底部提供你想要的那個只是寫高度=換行內容而不是重量。 它的做用是爲佈局提供包裝內容(包含編輯文本和按鈕的內容),而後具備權重的內容佔據佈局的其他部分。 我偶然發現了這個。


#4樓

使用下面的代碼對齊按鈕來運行它的工做

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

#5樓

現代的方法是使用ConstraintLayout並使用app:layout_constraintBottom_toBottomOf="parent"將視圖的底部約束到ConstraintLayout的底部app:layout_constraintBottom_toBottomOf="parent"

下面的示例建立一個FloatingActionButton,它將與屏幕的結尾和底部對齊。

<android.support.constraint.ConstraintLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_height="match_parent"
   android:layout_width="match_parent">

<android.support.design.widget.FloatingActionButton
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"

    app:layout_constraintBottom_toBottomOf="parent"

    app:layout_constraintEnd_toEndOf="parent" />

</android.support.constraint.ConstraintLayout>

做爲參考,我會保留舊答案。
在引入ConstraintLayout以前,答案是相對佈局


若是你有一個填充整個屏幕的相對佈局,你應該可以使用android:layout_alignParentBottom將按鈕移動到屏幕的底部。

若是底部的視圖沒有以相對佈局顯示,那麼它上面的佈局可能會佔用全部空間。 在這種狀況下,您能夠將視圖放在底部,首先放在佈局文件中,而後使用android:layout_above將佈局的其他部分放在視圖android:layout_above 。 這使底部視圖能夠佔用所需的空間,其他的佈局能夠填充屏幕的其他部分。

相關文章
相關標籤/搜索