如何在TextView中立即显示Edittext中的文本?

use*_*316 2 string unicode android textview android-edittext

我基本上试图做这个简单的事情:我有一个Edittext和一个TextView.现在我想立即(逐个字符)显示在textview中的edittext中输入的文本.此外,当按下退格键并从editext中删除一个字符时,这也应该在textview中发生.

简而言之:我想在textview中立即显示edittext中的所有内容.我怎样才能做到这一点?

这是我尝试过的一些代码,但这对我不起作用.当我在使用Android 4.0的模拟器上运行它(并使用计算机键盘输入)时,每个字符在textview中显示两次,并且edittext中没有文本.另一方面,当我使用Android 2.3.3的模拟器(并使用模拟器键盘进行输入)时,textview中没有文本,但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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

有什么想法解决这个问题?

Tro*_*omB 6

您可以使用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);
Run Code Online (Sandbox Code Playgroud)