如何在relativelayout中将edittext和按钮对齐?

时间:2015-09-01 04:45:35

标签: android android-layout

这里有一个非常相似的问题:

How to put an EditText and Button next to each other?

但是,该问题将LinearLayout作为根元素,而我的布局则没有。

我也已经读过这篇文章了:

http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html

我做的事情几乎与我做的一样,但是我的设备一直在#include <ctype.h> void decode (unsigned char* msg) { // Check content, allowing for upper/lower case. msg[0] = toupper (msg[0]); msg[1] = toupper (msg[1]); if ((msg[0] != 'D') && (msg[1] != 'O')) return; if ((msg[2] < '1') || (msg[2] > '5')) return; if (msg[3] != '=') return; if ((msg[4] != '0') && (msg[4] != '1')) return; // All content validated, make change, either turning off. if (msg[4] == '0') { switch (msg[2]) { case '1': LATGbits.LATG1 = 0; break; case '2': LATGbits.LATG0 = 1; break; case '3': LATGbits.LATG13 = 1; break; case '4': LATGbits.LATG14 = 1; break; case '5': LATGbits.LATG12 = 1; break; } return; } // Or turning on. switch (msg[2]) { case '1': LATGbits.LATG1 = 1; break; case '2': LATGbits.LATG0 = 0; break; case '3': LATGbits.LATG13 = 0; break; case '4': LATGbits.LATG14 = 0; break; case '5': LATGbits.LATG12 = 0; break; default: return; } sendString("OK"); } 元素的顶部上显示按钮

Button on top of EditText

EditText

理想情况下,<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="match_parent"> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:singleLine="true" android:inputType="text" /> <Button android:id="@+id/search_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignEnd="@+id/editText" android:layout_alignRight="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:text="@string/search_button" /> </RelativeLayout> 元素应该是我设备宽度的75%左右,按钮是剩余的25%

我接下来有使用Layouts的经验,这是我第一次尝试从网页背景制作一个非常简单的应用程序。

3 个答案:

答案 0 :(得分:1)

您应该使用LinearLayout。

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

    <EditText
        android:id="@+id/editText"
        android:layout_width="0dp"
        android:weight="1"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:inputType="text" />

    <Button
        android:id="@+id/search_button"
        android:layout_width="0dp"
        android:weight="3"
        android:layout_height="wrap_content"        
        android:text="@string/search_button" />
</LinearLayout >

修改 替代解决方案,但这种方式editText是固定宽度,按钮获取所有剩余宽度

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

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:singleLine="true"
        android:inputType="text" />

    <Button
        android:id="@+id/search_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/editText"
        android:layout_toEndOf="@+id/editText"
        android:text="@string/search_button" />
</RelativeLayout>

答案 1 :(得分:0)

使用按钮中的属性android:layout_toRightOf = "@id/editText",并将修复宽度指定为按钮,如下所示:

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

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ems = "15"
        android:inputType="text" />

    <Button
        android:id="@+id/search_button"
        android:layout_width="60dp"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/editText"
        android:text="@string/search_button" />
</RelativeLayout>

无需使用额外属性,例如android:layout_alignParentTop等。

答案 2 :(得分:0)

首先,您将fill_parent作为两个元素的宽度。 fill_parent表示与父相同的宽度,因此它们不能水平对齐(顺便说一句,您应该使用match_parent代替,它们是相同的,但前者已被弃用几年前...)。让他们坐在彼此旁边你应该做类似的事情

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

<!-- Put the Button first, so the EditText can occupy all the remaining space -->
<Button
    android:id="@+id/search_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:text="@string/search_button" />

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_toStartOf="@id/search_button"
    android:layout_toLeftOf="@id/search_button"
    android:singleLine="true"
    android:inputType="text" />

</RelativeLayout>

可悲的是,你无法给出百分比。要完成此任务,您需要使用LinearLayout并给予权重:

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

<EditText
    android:id="@+id/editText"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight=".75"
    android:singleLine="true"
    android:inputType="text" />

<Button
    android:id="@+id/search_button"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight=".25"
    android:text="@string/search_button" />

</LinearLayout>