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

ab1*_*b11 43 android android-edittext

我想创建一个EditText,它只接受数字,最多有4个数字,并且永远不会比填充4个数字时更窄(空时不缩小,或者必须扩展以容纳4个数字,所以它是固定.)

前两个完成:android:inputType ="number"和android:maxLength ="4".

如何设置最小长度?

kco*_*ock 96

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

android:ems="4"

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

  • 这是有效的,但因为我只允许数字输入,所以4 em宽度远远超过需要.我可以四处玩,以获得更好的宽度,但它仍然有点不精确. (6认同)

Jea*_*ean 38

有点hackish的,但你可以把你的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>
Run Code Online (Sandbox Code Playgroud)

  • 在约束布局的现代时代,这个小技巧实际上可以很好地用于固定宽度的数字编辑文本。您只需要将您的 EditText 限制为不可见的 TextView,并且不需要嵌套布局。 (2认同)

MW.*_*MW. 20

在我的情况下,我需要视图宽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" />
Run Code Online (Sandbox Code Playgroud)

此解决方案与字体,字母间距和其他可能不同的内容无关.textColorHint是0%不透明的白色,因此提示永远不会对用户可见.


Chr*_*van 8

你也可以尝试使用...

android:ems="4"
android:maxEms="4"
android:layout_width="wrap_content"
Run Code Online (Sandbox Code Playgroud)

...这应该确保默认的android edittext样式可能允许的最紧密的匹配

要使用左右两侧的填充进行额外控制,您可以使用

android:background="#ffffff"
android:paddingLeft="0dp"
android:paddingRight="0dp"
Run Code Online (Sandbox Code Playgroud)