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)字符的宽度.
Jea*_*ean 38
有点hackish的,但你可以把你的EditText里面FrameLayout旁边另一个TextView与text="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)
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%不透明的白色,因此提示永远不会对用户可见.
你也可以尝试使用...
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)