2013-08-21 2 views
2

Я в основном стараюсь сделать это просто: у меня есть Edittext и TextView. Теперь я хотел бы сразу (по характеру) отобразить текст, который вводится в edittext в текстовом виде. Кроме того, при нажатии клавиши backspace и удаления одного символа из editext это также должно происходить в текстовом виде.Как я могу немедленно отображать текст из Edittext в TextView?

Вкратце: я хочу отображать все из edittext сразу в текстовом виде. Как я могу это сделать?

Вот код, который я пробовал, но это не сработало для меня. Когда я запускаю его на эмуляторе с Android 4.0 (и использую компьютерную клавиатуру для ввода), каждый символ отображается дважды в текстовом режиме, и текст в редакторе отсутствует. С другой стороны, когда я использую эмулятор с Android 2.3.3 (и использую клавиатуру эмулятора для ввода), текст в текстовом виде отсутствует, однако edittext отлично работает.

В onCreate() Я называю свой метод setListener(). Это выглядит так:

private void setListener() { 
    mEdittext.setOnKeyListener(new View.OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      String str = mTextview.getText().toString(); 
      if(keyCode == KeyEvent.KEYCODE_DEL && str.length() > 0) { 
       str = str.substring(0, str.length()-1); 
      } else { 
       char newChar = (char)event.getUnicodeChar(); 
       str = str.concat(Character.toString(newChar)) ; 
      } 
      mTextview.setText(str); 

      return true; 
     } 
    }); 
} 

Любые идеи, чтобы исправить это?

+1

См [Это ответ] (http://stackoverflow.com/questions/16566658/automatically-update-my -activity-to-show-which-written/16567135 # 16567135) ... вы хотите «TextWatcher» – codeMagic

ответ

5

Вы можете использовать TextWatcher установить TextView как вводимый текст:

TextWatcher watcher = new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      mTextview.setText(mEdittext.getText().toString());   
     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
         } 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 
    }; 

    mEdittext.addTextChangedListener(watcher); 
+1

Это именно то, что я хотел :) – user2426316

0

Попробуйте это:

@Override 
protected void onStart() { 
    final EditText edit = (EditText) findViewById(R.id.editText1); 
    edit.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      TextView txt = (TextView) findViewById(R.id.textView1); 
      txt.setText(edit.getText().toString()); 
      return false; 
     } 
    }); 

    super.onStart(); 
} 
0
  1. Если вы хотите печатать TextView после перехода к следующей поле, вы можете использовать onFocusChangeListner

    //onCreate 
    TextView tv = (TextView) findViewById(R.id.textView1); 
    EditText et = (EditText) findViewById(R.id.editText1); 
    
    et.setOnFocusChangeListener(mylistener); 
    
    
    private OnFocusChangeListener mylistener = new OnFocusChangeListener(){ 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
        // TODO Auto-generated method stub 
        if(!hasFocus) 
        { 
         tv.setText(et.getText().toString()); 
        } 
    } 
    }; 
    
  2. Если вы хотите сохранить изменения текста динамически клавиши вводятся использование:

    et.addTextChangedListener(watcher); 
    
    TextWatcher watcher = new TextWatcher() { 
    
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
        // TODO Auto-generated method stub 
    
    } 
    
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
         int after) { 
        // TODO Auto-generated method stub 
    
    } 
    
    @Override 
    public void afterTextChanged(Editable s) { 
        if(s.length() > 0)   
         tv.setText(s.toString());   
    } 
    

    };

или

использовать OnKeyListener как eickeee объяснил или OnTextChanged событие TextWatcher как TronicZomB объяснил

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