7

我有一个EditText框,用户可以在其中输入输入。当用户输入文本时,我需要在 a TextView(位于 EditText 下方)中显示输入文本。

例子:

如果用户在 EditText 框中输入任何字符,我需要在 TextView 中显示相同的字符。同样,如果用户从 EditText 中删除任何字符,我需要从 TextView 中删除相同的字符。(最终,我想在更改 EditText 的文本时更改 TextView 的文本)。我希望我的要求现在很清楚。我怎样才能做到这一点?请指导我。

4

4 回答 4

23

将 TextWatcher 添加到您的 Edittext。在afterTextChanged()做你的操作。 http://developer.android.com/reference/android/text/TextWatcher.html

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

editText.addTextChangedListener(inputTextWatcher);
于 2012-05-22T09:23:52.573 回答
4

您应该覆盖此方法:

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {
        if(editText.getText().length() >= 0) {
            textView.setText(editText.getText().toString())
        } 
    }
});
于 2012-05-22T09:29:08.797 回答
4
edtText.addTextChangedListener(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) {
                // TODO Auto-generated method stub
                if (!edtText.getText().toString().equalsIgnoreCase("")){

                    // here textview.setText(edtText.getText());

                }
            }
        });
    }
于 2012-05-22T09:30:06.270 回答
0

解决方案是将TextWatcher添加到EditTextby usingaddTextChangedListener()函数中。在TextWatcher您需要在 3 个函数之一中编写转换/验证逻辑,afterTextChanged()具体取决于您想要执行这些操作的时间。beforeTextChanged()onTextChanged()

使用 Kotlin 你会做这样的事情:

editText.addTextChangedListener(object : android.text.TextWatcher {
        override fun afterTextChanged(s: Editable?) {

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            s?.let { textView.text = s.toString() }
        }
    })
于 2019-11-16T14:56:41.020 回答