I\'ve had a good search for this on here and can\'t find a solution.
I have a TextView in a RelativeLayout which contains an integer number. The number will range be
I think you're looking for the getTextBounds() method in the Paint class. Didn't try it myself tho.
Use android:maxLength attribute of TextView.Please read this
try this:
android:layout_width="wrap_content"
android:minEms="2"
Ems works if your font is monospace. For proportional fonts, you want it the width of two '0's, not two 'm's. You can fall back to TextPaint.measureText like so:
float measureText = zip.getPaint().measureText("00000");
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText);
Best way is to use TextPaint
. Here is a simple example:
TextPaint textPaint = new TextPaint();
textPaint.setTextSize(yourTextView.getTextSize());
yourTextView.setMinWidth((int) textPaint.measureText("-88.88"));
Do not forget to specify text size in your TextPaint object
In measureText
enter longest possible string you're expecting to see (I've written "-88.88" assuming my text can handle positive or negative numbers below 100 with 2 digits after comma)