49

我在同一条水平线上有一个EditText和一个Button相邻的集合。它看起来很棒,除了当用户输入大量文本时,它EditText被调整大小,并且Button被压扁。

我两者都有EditTextButton设置为layout_width="wrap_content". "fill_parent"弄乱了布局,如果不需要的话,我不想使用绝对尺寸 - 现在它在横向和纵向上看起来都很棒,我只是不想EditText调整大小。

我的布局:

<TableLayout
    android:id="@+id/homelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            android:id="@+id/labelartist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/entryartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:background="@android:drawable/editbox_background"
            android:editable="true"
            android:padding="5px"
            android:singleLine="true" />
        <Button
            android:id="@+id/okartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dip"
            android:layout_weight="1"
            android:text="Search" />
    </TableRow>

</TableLayout>
4

10 回答 10

88

对于 EditText 使用

android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"

而对于 Button 不要指定android:layout_weight

于 2009-09-11T06:09:27.480 回答
14

我所做的是在活动的 onCreate 中,首先测量 EditText,然后应用它的 maxWidth。

您可以使用类似于以下的代码来执行此操作:

EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
于 2011-10-11T14:31:35.500 回答
5

EditText一个maxWidth。这应该会阻止它调整大小超出您提供的宽度。此外,如果您希望它包含在 1 行中,请将maxLines设置也设置为 1。

于 2009-09-11T05:27:45.180 回答
3

在此处输入图像描述

您需要添加 android:imeOptions 来防止这种行为。

于 2016-02-18T14:48:56.777 回答
2

只需使用:

android:layout_width="fill_parent"

对于 EditText 和 Button。它也适用于 EditText,但最好在两者上都有它。

于 2010-10-11T20:55:50.453 回答
1

您可以定义编辑文本的大小,如上所示

android:minWidth="80dp"
android:maxWidth="80dp"

或者

android:layout_width="60dp"

或者

您可以应用所需大小的背景图像,但不要忘记使用 wrap_content 定义其高度和宽度。

  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
于 2013-01-14T21:12:32.380 回答
0

我有一个类似的问题,但我无法让上述工作。我所做的是从 EditText 框中获取文本,然后将其格式化为我的屏幕可以处理的最大尺寸。当我将其保存到数据库时,我会将其保存为显示文本和原始文本。

如果你去这个页面,我会给出更长的解释。

于 2009-09-23T20:41:55.637 回答
0

正确的方法是将 android:minWidth 和 android:maxWidth 设置为您想要的宽度。这样您就不必调整布局来使用 android:layout_weight。

例如,如果您希望 EditText 始终为 80 密度像素,无论您键入多少字符,请使用以下命令:

android:minWidth="80dp"
android:maxWidth="80dp"
于 2011-09-07T15:35:38.720 回答
0

我有确切的查询。但是我在线性布局中有一个 EditText 和一个 Button。我为 EditText 尝试了 android:layout_weight="1" android:layout_width="0dp" 它工作得非常完美!!非常感谢!

于 2014-10-04T06:19:57.230 回答
0

选择的解决方案有效,但让我补充一点:
如果您使用 android:layout_weight="0.15"(值不重要)
,那么
android:layout_width="0dp"如果LinearLayout是水平的
或者
android:layout_height="0dp"LinearLayout垂直的。

于 2018-12-25T21:41:56.590 回答