在Android中,如何创build固定宽度的EditText?

我想创build一个只接受数字的EditText,最多有4个数字,并且不会比填充4个数字时窄(不收缩时为空,或者不得不扩展以容纳4个数字,所以它是固定。)

前两个是用android:inputType =“number”和android:maxLength =“4”来完成的。

我怎样才能设置最小长度?

有点乱七八糟的 ,但是你可以把你的EditText放在一个FrameLayout里面,而另一个TextViewtext="0000"visibility=invisible.

FrameLayout应该有width=wrap_content和您的EditText将有width=match_parent
这应该使它总是正确的宽度。

这样做的好处是,它是100%xml方面,不涉及代码。

 <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="0000" android:visibility="invisible" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:maxLength="4" /> </FrameLayout> 

您可以使用的EditText的一个很less使用的(AFAIK)属性是:

android:ems="4"

这使EditText正好4宽。 em宽度是所选字体中最宽(M)字符的宽度。

在我的情况下,我需要的观点是6位数字。 android:ems使字段太宽(因为M字符比一个数字宽)。

我最终使用了一个透明的提示,指出了字段的最小宽度。 下面的例子是六位数字的宽度。

 <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="000000" android:textColorHint="#00FFFFFF" android:maxLength="6" android:inputType="numberPassword" /> 

这种解决scheme是独立于字体,字母间距和其他可能会有所不同的东西。 textColorHint是一个0%不透明的白色,所以提示不应该是用户可见的。

你也可以尝试使用。 。 。

 android:ems="4" android:maxEms="4" android:layout_width="wrap_content" 

。 。 。 这应该确保可能由默认的android edittext样式所允许的最严格的适合

对于左侧和右侧的填充的额外控制,您可以使用

 android:background="#ffffff" android:paddingLeft="0dp" android:paddingRight="0dp" 

使用android:width =“XXX.Xdp”

这可以让你设置应该是相对于屏幕密度的密度像素的宽度。 我尝试使用基于ems的字段2字符宽,但由于ems需要一个int,2太小,3太大了。 布莱什。

有一个令人难以置信的简单的方法来做到这一点编程。

 myEditText.setLayoutParams(new LinearLayout.LayoutParams(200, 50)); 

这将设置宽度为200,高度为50!

请享用 :)

不知道内置解决scheme,但您可以尝试钝化检查长度,并提交提交时出现错误消息的对话框。

问题是,一个EditText小部件会因为许多不同的操作而失去焦点,例如触摸另一个敏感视图,菜单button或(硬键盘光标控制)等等。 input的最大长度或types的恢复可以在捆扎过程中完成(如果通过filter或长度不超过,则接受字符)。 但是每次都会丢失焦点 – 即使提交还没有完成,并且input为short – >因此没有内置的最小长度解决scheme,因为应用程序会阻止此时执行另一个事件或任务。 至less在进入工作stream程的下一步之前,您必须validation您的input。

我使用android:layout_width =“60dip”,所以同意mike fratto。

ems解决scheme似乎也很有趣。

菲尔

当你把字符放在wditText的宽度之上时,你可以设置alignment的方式,而不是增加宽度或EditText的宽度。 请将上面的视图设置为LeftOf和RightOf来pipe理这个事情。 只有一个解决scheme