I have an array of editTexts which I make like this:
inputs[i] = new EditText(this);
inputs[i].setWidth(376);
inputs[i].setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
tFields.addView(inputs[i]);
I want every character to be capitalized. Right now, the first letter of the first word is lowercase, then all the characters afterwords are upper case. I can take what the user inputs after they are done and convert that to uppercase, but that's not really what I'm going for. Is there a way to get these fields to behave the way I want them to?
For some reason adding the xml did not work on my device.
I found that a Text Filter works for to uppercase, like this
You need to tell it it's from the "class" text as well:
The input type is a bitmask. You can combine the flags by putting the | (pipe) character in the middle, which stands for the OR logic function, even though when used in a bitmask like this it means "this flag AND that other flag".
(This answer is the same as Robin's but without "magic numbers", one of the worst things you can put in your code. The Android API has constants, use them instead of copying the values and risking to eventually break the code.)
I know this question is a bit old but here is explained how to do it in different ways:
Applying UpperCase in XML
Add the following to the EditText XML:
Applying UpperCase as the only filter to an EditText in Java
Here we are setting the UpperCase filter as the only filter of the EditText. Notice that this method removes all the previously added filters.
Adding UpperCase to the existing filters of an EditText in Java
To keep the already applied filters of the EditText, let's say inputType, maxLength, etc, you need to retrieve the applied filters, add the UpperCase filter to those filters, and set them back to the EditText. Here is an example how:
Just use
String.toUpperCase()
method.example :
EDIT :
add this attribute to you
EditText
Tag in yourlayout
xml :OR:
If you want whatever the user types to be uppercase you could implement a
TextWatcher
and use theEditText
addTextChangedListener
to add it, an on theonTextChange
method take the user input and replace it with the same text in uppercase.