繁体   English   中英

如何在更改 EditText 的文本时更改 TextView 的文本?

[英]How to change TextView's text on change of EditText's text?

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

例子:

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

将 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);

你应该覆盖这个方法:

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

                }
            }
        });
    }

解决方案是使用addTextChangedListener()函数将TextWatcher添加到EditText TextWatcher您需要在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() }
        }
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM