Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.test;
- import android.content.Context;
- import android.text.Editable;
- import android.text.InputFilter;
- import android.text.InputType;
- import android.text.TextWatcher;
- import android.text.method.NumberKeyListener;
- import android.util.AttributeSet;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.EditText;
- import android.widget.Toast;
- public class CustomEditText extends EditText {
- private int lengthOld = 0;
- public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- initialize();
- }
- public CustomEditText(Context context, AttributeSet attrs) {
- super(context, attrs);
- initialize();
- }
- public CustomEditText(Context context) {
- super(context);
- initialize();
- }
- public void initialize() {
- int maxLength = 8;
- InputFilter[] FilterArray = new InputFilter[1];
- FilterArray[0] = new InputFilter.LengthFilter(maxLength);
- this.setFilters(FilterArray);
- this.setKeyListener(keylistenerText);
- this.addTextChangedListener(new TextWatcher()
- {
- public void afterTextChanged (Editable s)
- {
- String textCurrent = s.toString();
- int lengthNew = textCurrent.length();
- // erasing...
- if (lengthOld > lengthNew) {
- if (lengthNew == 4) {
- s.delete(3, 4);
- lengthNew--;
- }
- // typing...
- } else{
- if (lengthNew < 3) {
- String textCurrentUp = textCurrent.toUpperCase();
- if (!textCurrentUp.equals(textCurrent)) {
- // uppercase
- CustomEditText.this.setText(textCurrentUp);
- CustomEditText.this.setSelection(lengthNew);
- }
- } else if (lengthNew == 3 || (lengthNew == 4 && textCurrent.charAt(3) != '-')) {
- // inserts the dash and switches to numerical
- Toast.makeText(CustomEditText.this.getContext(), "Now enter only numbers", Toast.LENGTH_SHORT).show();
- CustomEditText.this.setInputType(InputType.TYPE_CLASS_TEXT);
- s.insert(3, "-");
- lengthNew++;
- CustomEditText.this.setSelection(lengthNew);
- } else if (lengthNew >= 8) {
- // remove the keyboard
- InputMethodManager imm = (InputMethodManager) CustomEditText.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(CustomEditText.this.getWindowToken(), 0);
- }
- }
- // change the type of character
- if (lengthNew > 3) {
- CustomEditText.this.setKeyListener(keylistenerNumber);
- } else {
- CustomEditText.this.setKeyListener(keylistenerText);
- }
- lengthOld = lengthNew;
- }
- public void beforeTextChanged (CharSequence s, int start, int count, int after)
- {
- }
- public void onTextChanged (CharSequence s, int start, int before, int count)
- {
- }
- });
- }
- private final KeylistenerNumber keylistenerNumber = new KeylistenerNumber();
- private final KeylistenerText keylistenerText = new KeylistenerText();
- private class KeylistenerNumber extends NumberKeyListener {
- public int getInputType() {
- return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
- }
- @Override
- protected char[] getAcceptedChars() {
- return new char[] {'0','1','2','3','4','5','6','7','8','9'};
- }
- }
- private class KeylistenerText extends NumberKeyListener {
- public int getInputType() {
- return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
- }
- @Override
- protected char[] getAcceptedChars() {
- return new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
- 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c',
- 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
- 't', 'u', 'v', 'w', 'x', 'y', 'z' };
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement