设置Textview + Edittext + Button

时间:2013-11-08 21:21:54

标签: android android-layout button

我想在同一行放置一个TextView,Edittext和一个按钮,但我遇到的问题是按钮没有正确对齐到左边,在小屏幕中,edittext填充整个。

小屏幕: enter image description here

大银幕:enter image description here

我的编纂如下:

<LinearLayout
        android:id="@+id/layout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/address_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/address_textview"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/address_edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="@string/address_textview_hint"
            android:imeActionLabel="@string/search_button"
            android:imeOptions="actionDone"
            android:inputType="textCapWords"
            android:nextFocusDown="@id/address_edittext"
            android:nextFocusUp="@id/address_edittext"
            android:singleLine="true" />

        <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="right" >
        <Button
            android:id="@+id/go_button"
            android:layout_width="50dp"
            android:layout_height="35dp"
            android:text="Go" />
                </RelativeLayout>

    </LinearLayout>

4 个答案:

答案 0 :(得分:6)

对EditText应用权重,这样它就会占用尽可能多的空间,同时让其他两个元素执行正常的wrap_content。为此,删除相对布局容器,然后将EditText宽度更改为“0dp”并为其指定layout_weight为“1”,如下所示:

<LinearLayout
    android:id="@+id/layout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/address_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/address_textview"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/address_edittext"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:hint="@string/address_textview_hint"
        android:imeActionLabel="@string/search_button"
        android:imeOptions="actionDone"
        android:inputType="textCapWords"
        android:nextFocusDown="@id/address_edittext"
        android:nextFocusUp="@id/address_edittext"
        android:singleLine="true" />

    <Button
        android:id="@+id/go_button"
        android:layout_width="50dp"
        android:layout_height="35dp"
        android:text="Go" />

</LinearLayout>

答案 1 :(得分:4)

首先,很多人会告诉你hint是Android的解决方案,不需要标签。我不在乎您是否使用标签,但它确实可以节省空间,特别是在较小的屏幕上。那只是一个FYI。

现在,只有RelativeLayout的{​​{1}}似乎没用了......我会将其删除。您可以使用Button,以便每个layout_weight占用适当的空间。确保制作View。所以它可能看起来像

layout_width="0dp"

我在这里分别使用2,3,1代表<LinearLayout android:id="@+id/layout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/address_textview" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:gravity="center" android:text="@string/address_textview" android:textStyle="bold" /> <EditText android:id="@+id/address_edittext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:hint="@string/address_textview_hint" android:imeActionLabel="@string/search_button" android:imeOptions="actionDone" android:inputType="textCapWords" android:nextFocusDown="@id/address_edittext" android:nextFocusUp="@id/address_edittext" android:singleLine="true" /> <Button android:id="@+id/go_button" android:layout_width="0dp" android:layout_height="35dp" android:layout_weight="1" android:text="Go" /> </LinearLayout> weightsTextView的{​​{1}}。您可能需要更改这些内容以获得您想要的内容,但这应该会给您一个开始。

答案 2 :(得分:2)

布局权重是设计适应屏幕尺寸的布局的理想选择。但是,请确保将layout_width设置为0dp,否则将无法正常工作。

像这样使用:

    android:layout_width="0dp"
    android:layout_weight="1"

答案 3 :(得分:1)

我会假设你的意思是按钮没有正确对齐。

这是因为您的RelativeLayout的android:width="wrap_content",但它应该是android:width="match_parent"

此外,您最好设置EditText的android:width="0dp"并添加android:weight="1",以便在屏幕尺寸之间扩展/缩小。