2014-10-11 3 views
0

У меня есть EditText, как это в моем файле XML:Изменить EditText inputType после ввода первого символа пользователя

<EditText 
    android:id="@+id/InputPass" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="right" 
    android:layout_marginBottom="20dp" 
    android:layout_marginLeft="40dp" 
    android:layout_marginRight="40dp" 
    android:drawableLeft="@drawable/ic_lock" 
    android:gravity="right" 
    android:hint="رمز عبور" 
    android:singleLine="true" 
    android:textSize="18sp" /> 

По какой-то причине я хочу изменить свою inputType после пользователь вошел первый символ. Я пробую так:

Pass.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int before, int count) { 

       if(start == 0){ 
        Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
       } 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      } 
     }); 

Но это не сработает! Есть ли кто-нибудь, кто знает какое-либо решение для этого?

ответ

0

Я достиг к наилучшему результату по этому:

Pass.setOnFocusChangeListener(new OnFocusChangeListener() { 

    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if(hasFocus){ 
      Pass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
     } 
    } 
}); 
0

Внутри

afterTextChanged

метод, попробуйте на следующее:

@Override 
     public void afterTextChanged(Editable s) { 
      System.out.println("Editable: "+s); 
      if(s.getText().toString().length ==1) 
       Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
     } 
+0

GetText() не определено для типа Editable! – MAY3AM

1

Изменение:

Pass.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 

To:

Pass.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
+1

Спасибо, брат! Его работа как шарм! :) – MAY3AM

+0

@ MAY3AM приветствуется! – Abdellah

+0

Привет, Брось, проблема, когда я применяю это решение и получаю текст edittext после этого, 'Pass.getText(). ToString()' возвращенная строка пропустила первый символ !!! например Если я введу 123456, получите текст 23456?!?!?! – MAY3AM

Смежные вопросы