How to limit the input of a text edit - android

I am making an edittext, and I would like to force the user to enter a number less than 200, I have seen people showing how to limit the number of characters, but does anyone know how to limit the user input without using an 800 section if statement? ie. The user can enter any number between 1- 199 but they cannot enter the number 201.

first set ur edit text input type number and after that
edittext.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){
String strEnteredVal = edittext.getText().toString();
if(!strEnteredVal.equals("")){
int num=Integer.parseInt(strEnteredVal);
if(num<200){
edittext.setText(""+num);
}else{
edittext.setText("");
}
}
});

I'm not clear whether you mean to limit the field to less than 200 characters, or to a number value less than 200 (e.g. "199"). If the latter, set the property android:inputType="number", and then add an OnFocusChangeListener to the EditText, implementing the onFocusChange() method to check the value of the EditText and change/alert/remove if not valid.

Number Spinner/Picker for Android
Found a handy number spinner for Android based on the Google internal number spinner (not yet made public) used in the Android Time Picker Dialog.
It is released under the Apache 2.0 and can be found
http://www.quietlycoding.com/?p=5
have
mStart = DEFAULT_MIN;
mEnd = DEFAULT_MAX;
At the top of the java file I have declared the DEFAULT_MAX and DEFAULT_MIN as such:
private static final int DEFAULT_MAX = 200;
private static final int DEFAULT_MIN = 0;

Related

Set EditText to have phone number values set

I have been trying to have my editText accept phone values only as well as extensions. I managed to do this in its xml phone using.
android:inputType="phone"
android:digits="0123456789()- x"
Now the other problem I have been attempting to figure out is how to have editText display ( ) - at all times and when more numbers pressed (ooo) ooo-oooo xoooo. Currently I have editText
editTextpponentTeamContactPhone.addTextChangedListener(new PhoneNumberFormattingTextWatcher() {
PhoneNumberUtils phoneNumberUtils;
#Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
phoneNumberUtils.formatNumber(editTextpponentTeamContactPhone.getText().toString());
super.onTextChanged(s, start, before, count);
}
});
This is close to what I want. It becomes (xxx) xxx-xxxx but not extensions so was wondering if anyone had come through something similar I am looking but not getting much luck.
To limit char lenght at TextView you can use
android:maxLength="14"
or programmatically :
textView.setFilters(new InputFilter[] { new InputFilter.LengthFilter(250) });

Best way to get int from user

I'm needing to get an integer from the user for one of my apps and I have tried using a text edit but it didn't seem to work, so I'm wanting to know another way of getting an integer from the user. The int will be positive numbers only and no more than 2 digits.
Use EditText
You can limit the number of digits like this
Update:
Then you need to add a listener
http://developer.android.com/reference/android/widget/TextView.html#addTextChangedListener(android.text.TextWatcher)
a relevant question:
android edittext onchange listener
You have to use EditText.. then from in Your Activity
String s = ed.getText().ToString();
int i = 0;
if(s!=null)
i= Integer.valueOf(s);
To make sure keyboard only show numbers,
make sure you add
android:input="number"
to your EditText in the XML
UPDATE
yourEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
String s = yourEditText.getText().ToString();
int i = 0;
if(s!=null)
i= Integer.valueOf(s);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});
you can use properties in your XML .
use this line to limit input text in numbers in XML :
android:inputType="number"
and use this line to set your specific character:
android:digits="1234567890"
i think it is the best way for this purpose.

Associate EditText with a TextView for labeling purposes

Hi I am learning Android programming and have run into an issue that I couldn't get a clear answer to through researching.
I have a TextView which serves as a label for my EditText. I have a method which checks if the EditText is an empty String. If the string is empty I want to be able to get a reference to the TextView that corresponds to that EditText in order to make a toast saying something like "please enter a value for ".
I've looked into getLabelFor/setLabelFor but is there a way to do this in the layout XML?
What is best practice for this type of functionality.
You're describing a functionally that is build in to EditText. There is a special field you can define in xml called hint, which is the recommended way to label an EditText rather than a nearby TextView. Additionally, EditText has a method called setError() (link). If the user attempts to hit a submit button, for example, you can check to see if the EditText is empty and if so, call setError().
I wonder if the following is the thing that you need
TextWatcher inputTextWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after){
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().equals("")) {
textView.setText("please enter a value for ..");
} else {
textView.setText("<the textedit is not empty>");
}
}
public void afterTextChanged(Editable s) {
}
};
editText.addTextChangedListener(inputTextWatcher);

EditText with TextWatcher and Suggestions

Moving an app from 2.2 to 3.x, one of my EditText's that I was using a TextWatcher on for validation is behaving badly. In short, when a user clicks on the EditText and the entire word goes into 'suggestions mode' (where it is underlined), it effectively gets removed from the EditText from the TextWatcher's perspective, triggering my text validation check that I do for an empty EditText. The code:
mText = (EditText) findViewById(R.id.inpt_title);
mText.addTextChangedListener(new TextWatcher() {
#Override
public void afterTextChanged(Editable editable) {
final String title = editable.toString();
Log.d(LOG_TAG, "addTextChangedListener(): title: " + title + ", length: " + title.length());
if (title.length() == 0) {
// empty title
mText.setError(getString(R.string.error_note_title_empty));
}
}
#Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
mText.setTextColor(getResources().getColor(R.color.black));
}
#Override
public void onTextChanged(CharSequence s, int start, int count, int after) {}
});
I'd like to keep suggestions working, but there seems to be some weird interaction here.
Any way to either a) keep the EditText from being empty when the entire word is in 'suggestion mode', or at least checking to see if the EditText is in the 'suggestion' state to determine if the EditText is truly empty, or b) turing off suggestions? I've tried android:inputType="text|textCapWords|textNoSuggestions" for the EditText in question, as well as setting it via mText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); in the code above but suggestions keep happening on a Lenovo 3.1 tablet.
Update:
I see API 14 added a isInputMethodTarget() method to the EditText, which I could use to check for active suggestions and disable the validation... but I am running against API 12. Perhaps I could check the IME directly to see if the suggestions are active?

SoftKeyboard issue

I am working on softkeyboard.
My issues are below.
How to get current position of cursor in text(EditText).
How to get total length of value in text(EditText).
If EditText is multi-line then get current line of cursor in text(EditText).
If you want see my code then see this softkeyboard's link. I am following this code.
You should put textwatcher event in edittext this is the event is execute when user type a character (any in put by key board).
In your case when user type a single character in edittext you got hole text then get length of this text it is your cursor position and total length of value in text.
according to your third question you have all the text written in edit text using above method then you convert all the text in ascii value then compare every character with 13(it is the ascii value of enter in keyboard )and increase counter of line when it condition true using this you find no of line in edit text. i am giving a example for you how to put text watcher in edittext you change in this code and convert it according to your condition.
ed.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = ed.getText().length();
);
}
});

Categories

Resources