Android - 如何对齐editText并提交按钮底部?

时间:2014-08-22 12:12:16

标签: android android-layout android-xml

我阅读了一些关于布局的文章和一些教程,但我还没有得到它是如何工作的......我有以下代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/edit_text"
    android:hint="Type your message" ></EditText>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="Send"></Button>

<WebView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight=".5"
    android:id="@+id/webview" ></WebView>
</LinearLayout>

我想将我的editText和发送按钮对齐在底部和我的webview上面..任何想法我该怎么办?

7 个答案:

答案 0 :(得分:4)

有很多方法可以让它发挥作用:

  1. 线性布局

    • 按添加顺序显示元素

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="vertical">
      
        <WebView
            android:id="@+id/webview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight=".5"></WebView>
      
       <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
      
       <EditText
            android:id="@+id/edit_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="Type your message"></EditText>
      
        <Button
           android:id="@+id/button"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Send"></Button>
      
        </LinearLayout>
      
      
      </LinearLayout>           
      

      enter image description here

  2. 相对布局

    • 相对于其他组件显示元素

       <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="match_parent"
           android:layout_height="match_parent">
      
       <WebView
           android:layout_width="match_parent"
           android:layout_height="400dip"
           android:id="@+id/webview" ></WebView>
      
      <EditText
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_below="@+id/webview"
           android:id="@+id/edit_text"
           android:layout_centerInParent="true"
           android:hint="Type your message" ></EditText>
      
      <Button
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/button"
           android:layout_centerInParent="true"
           android:layout_toRightOf="@+id/edit_text"
           android:layout_below="@+id/webview"
           android:text="Send"></Button>
      
      
      </RelativeLayout>
      

      enter image description here

答案 1 :(得分:3)

试试这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </WebView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/edit_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="Type your message" >
        </EditText>

        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Send" >
        </Button>
    </LinearLayout>

</RelativeLayout>

答案 2 :(得分:1)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <WebView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/webview" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_vertical" >

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/edit_text"
            android:hint="Type your message" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/button"
            android:text="Send"/>
    </LinearLayout>
</LinearLayout>

答案 3 :(得分:1)

使用相对布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/edit_text"
    android:hint="Type your message"
    android:layout_alignParentBottom="true">//align in parent bottom
</EditText>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="Send"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@id/edit_text"> //align to the roght of the EditText
</Button>

<WebView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/webview" ></WebView>
</RelativeLayout >

答案 4 :(得分:1)

您可以尝试在相对布局中嵌套线性布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/edit_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="Type your message" >
        </EditText>

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Send" >
        </Button>
    </LinearLayout>

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/container"  >
    </WebView>

</RelativeLayout>

如果您需要在一行中使用EditText和Button,则必须使用orientation:Horizo​​ntal for LinearLayout。

答案 5 :(得分:1)

使用此:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical" >

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".9" >
</WebView>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.1"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:hint="Type your message" >
    </EditText>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Send" >
    </Button>
</LinearLayout>

</LinearLayout>

答案 6 :(得分:0)

您可以使用嵌套的LinearLayouts执行此操作,也可以将根LinearLayout更改为RelativeLayout。使用RelativeLayout,您可以在WebView,EditText和Button上添加属性,这些属性指定每个元素相对于其他元素的对齐方式。请参阅Relative Layout Guide