1

我想在同一行中放置一个 TextView、Edittext 和一个按钮,但我遇到的问题是该按钮没有正确地向左对齐,并且在小屏幕中,edittext 会全部填充。

小屏幕: 在此处输入图像描述

大屏幕:在此处输入图像描述

我的编码如下:

<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

4 回答 4

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>
于 2013-11-08T21:26:37.437 回答
4

首先,很多人会告诉你这hint是安卓不需要标签的解决方案。我不在乎您是否使用标签,但它确实可以节省空间,尤其是在较小的屏幕上。那只是一个仅供参考。

现在,你的RelativeLayout那个只有一个Button似乎没用......我会删除它。您可以使用layout_weight使每个View占用适当数量的空间。确保使layout_width="0dp". 所以它可能看起来像

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

在这里,我分别将 2,3,1 用于weights您的TextView,EditTextButton。您可能需要更改那些以获得您想要的东西,但这应该给您一个开始。

于 2013-11-08T21:27:03.363 回答
2

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

像这样使用:

    android:layout_width="0dp"
    android:layout_weight="1"
于 2013-11-08T21:29:03.633 回答
1

我将假设您的意思是按钮未正确对齐到右侧。

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

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

于 2013-11-08T21:25:42.680 回答