I would like to create an EditText which accepts only numbers, has a maximum of 4 numbers, and is never narrower than it would be if filled with 4 numbers (does not shrink when empty, or have to expand to accommodate 4 numbers, so it's fixed.)
The first 2 are accomplished with: android:inputType="number" and android:maxLength="4".
How can I set the minimum length?
In my situation, I needed the view to be 6 digits wide. android:ems made the field too wide (since the M-character is wider than a digit).
I ended up using a transparent hint which dictates the minimum width of the field. The example below is six digits wide.
This solution is independent of font, letter spacing and other things which may vary. The textColorHint is a 0% opaque white color, so the hint should never be visible to the user.
You can also try using. . .
. . . this should insure the tightest fit possibly allowed by the default android edittext style
For additional control with the padding on both left and right you can use
A little hackish, but you can put your
EditText
inside aFrameLayout
alongside with anotherTextView
withtext="0000"
andvisibility=invisible.
FrameLayout
Should havewidth=wrap_content
and yourEditText
will havewidth=match_parent
.That should make it the right width always.
The advantage of this is, it's 100% xml-side, no code involved.
Don't know about built-in solution but you can try passivly check the length and rise a dialog with error message at the moment of submission.
Use android:width="XXX.Xdp"
This lets you set the width in density pixels which ought to be relative to the screen density. I tried using ems based for a field 2 chars wide, but since ems requires a int, 2 was too small and 3 was too big. Blech.
There is an incredibly easy way to do this programmatically.
This would set the width to 200 and the height to 50!!
Enjoy :)