簡體   English   中英

如何在TextView中立即顯示來自Edittext的文本?

[英]How can I instantly display text from an Edittext in a TextView?

我基本上是想做一件簡單的事情:我有一個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;
        }
    });
}

有任何解決辦法嗎?

您可以使用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);

嘗試這個:

@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();
}
  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()); } 

    };

要么

使用像eickeee一樣說明的OnKeyListener或像TronicZomB一樣說明TextWatcher的onTextChanged事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM