如何防止EditText在用户input时自行resize?

我有一个EditText和一个Button设置在同一水平线上彼此相邻。 它看起来不错,除非用户input大量文本, EditText被resize, Button被压扁。

我将EditTextButton设置为layout_width="wrap_content""fill_parent"弄乱了布局,我不想使用绝对大小,如果我不需要 – 现在它在横向和纵向上看起来都很棒,我只是不希望EditTextresize。

我的布局:

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

对于EditText的使用

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

而对于Button不要指定android:layout_weight

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

您可以使用与以下类似的代码来完成此操作:

 EditText someedittext = (EditText)findViewById(R.id.sometextview); someedittext.setMaxWidth(someedittext.getWidth()); 

EditText一个maxWidth 。 这应该阻止它调整超出你提供的宽度。 另外,如果您希望它被包含在1行中,则maxLines设置maxLines设置为1。

只要使用:

 android:layout_width="fill_parent" 

为EditText和Button。 它也将工作设置为EditText,但最好在两个都有。

你可以像上面显示的那样定义edittext的大小

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

要么

 android:layout_width="60dp" 

要么

你可以应用你想要的大小的背景图像,但不要忘记用wrap_content来定义它的高度和宽度。

  android:layout_width="wrap_content" android:layout_height="wrap_content" 

在这里输入图像说明

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

点击这里

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

如果你去这个页面,我会提供一个更长的解释。

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

例如,如果您希望EditText始终为80个像素密度,则无论input多less个字符,都会使用以下内容:

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

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