Advertisement
Guest User

Untitled

a guest
Dec 9th, 2010
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.53 KB | None | 0 0
  1. package com.test;
  2.  
  3. import android.content.Context;
  4. import android.text.Editable;
  5. import android.text.InputFilter;
  6. import android.text.InputType;
  7. import android.text.TextWatcher;
  8. import android.text.method.NumberKeyListener;
  9. import android.util.AttributeSet;
  10. import android.view.inputmethod.InputMethodManager;
  11. import android.widget.EditText;
  12. import android.widget.Toast;
  13.  
  14. public class CustomEditText extends EditText {
  15.  
  16.     private int lengthOld = 0;
  17.    
  18.     public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
  19.         super(context, attrs, defStyle);
  20.         initialize();
  21.     }
  22.  
  23.     public CustomEditText(Context context, AttributeSet attrs) {
  24.         super(context, attrs);
  25.         initialize();
  26.     }
  27.  
  28.     public CustomEditText(Context context) {
  29.         super(context);
  30.         initialize();
  31.     }
  32.    
  33.     public void initialize() {
  34.        
  35.         int maxLength = 8;
  36.         InputFilter[] FilterArray = new InputFilter[1];
  37.         FilterArray[0] = new InputFilter.LengthFilter(maxLength);
  38.         this.setFilters(FilterArray);
  39.         this.setKeyListener(keylistenerText);
  40.         this.addTextChangedListener(new TextWatcher()
  41.         {
  42.                 public void  afterTextChanged (Editable s)
  43.                 {
  44.                     String textCurrent = s.toString();
  45.                     int lengthNew = textCurrent.length();
  46.                    
  47.                     // erasing...
  48.                     if (lengthOld > lengthNew) {
  49.                         if (lengthNew == 4) {
  50.                             s.delete(3, 4);
  51.                             lengthNew--;
  52.                         }
  53.                     // typing...
  54.                     } else{
  55.                         if (lengthNew < 3) {
  56.                             String textCurrentUp = textCurrent.toUpperCase();
  57.                             if (!textCurrentUp.equals(textCurrent)) {
  58.                                 // uppercase
  59.                                 CustomEditText.this.setText(textCurrentUp);
  60.                                 CustomEditText.this.setSelection(lengthNew);
  61.                             }
  62.                         } else if (lengthNew == 3 || (lengthNew == 4 && textCurrent.charAt(3) != '-')) {
  63.                             // inserts the dash and switches to numerical
  64.                             Toast.makeText(CustomEditText.this.getContext(), "Now enter only numbers", Toast.LENGTH_SHORT).show();
  65.                             CustomEditText.this.setInputType(InputType.TYPE_CLASS_TEXT);
  66.                             s.insert(3, "-");
  67.                             lengthNew++;
  68.                             CustomEditText.this.setSelection(lengthNew);
  69.                         } else if (lengthNew >= 8) {
  70.                             // remove the keyboard
  71.                             InputMethodManager imm = (InputMethodManager) CustomEditText.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
  72.                             imm.hideSoftInputFromWindow(CustomEditText.this.getWindowToken(), 0);
  73.                         }
  74.                     }
  75.                     // change the type of character
  76.                     if (lengthNew > 3) {
  77.                         CustomEditText.this.setKeyListener(keylistenerNumber);
  78.                     } else {
  79.                         CustomEditText.this.setKeyListener(keylistenerText);
  80.                     }
  81.                     lengthOld = lengthNew;
  82.                 }
  83.                
  84.                 public void  beforeTextChanged  (CharSequence s, int start, int count, int after)
  85.                 {
  86.                 }
  87.                
  88.                 public void  onTextChanged  (CharSequence s, int start, int before, int count)
  89.                 {
  90.                 }
  91.         });
  92.     }
  93.    
  94.     private final KeylistenerNumber keylistenerNumber = new KeylistenerNumber();
  95.     private final KeylistenerText keylistenerText = new KeylistenerText();
  96.    
  97.     private class KeylistenerNumber extends NumberKeyListener {
  98.  
  99.         public int getInputType() {
  100.           return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
  101.         }
  102.        
  103.         @Override
  104.         protected char[] getAcceptedChars() {
  105.           return new char[] {'0','1','2','3','4','5','6','7','8','9'};
  106.         }
  107.     }
  108.    
  109.     private class KeylistenerText extends NumberKeyListener {
  110.        
  111.         public int getInputType() {
  112.             return InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
  113.         }
  114.        
  115.         @Override
  116.         protected char[] getAcceptedChars() {
  117.             return new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
  118.                     'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c',
  119.                     'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
  120.                     't', 'u', 'v', 'w', 'x', 'y', 'z' };
  121.         }
  122.     }
  123.  
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement