繁体   English   中英

安卓。 粘贴文本时从 EditText 中删除 HTML

[英]Android. Remove HTML from EditText when paste text

也许这是一个非常简单的问题,但我绝对不明白该怎么做。 当我从网站复制文本并将其粘贴到 EditText 中时,我在 EditText 中获得了 HTML 格式,如何避免这种情况?

我的编辑文本

<EditText
            android:id="@+id/field"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

将 TextChangeListener 添加到您的编辑文本视图

yourEditTextView.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                charSequence = charSequence.toString()
                        .replaceAll("<(.*?)\\>", " ");//Removes all items in brackets
                charSequence =
                        charSequence.toString().replaceAll("<(.*?)\\\n", " ");//Must be undeneath
                charSequence = charSequence.toString()
                        .replaceFirst("(.*?)\\>",
                                " ");//Removes any connected item to the last bracket
                charSequence = charSequence.toString().replaceAll("&nbsp;", " ");
                charSequence = charSequence.toString().replaceAll("&amp;", " ");
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

希望这可以帮助

感谢@gianhtran 的想法。 这并不能解决我的问题,但它有助于找到解决方案。 这个解决方案看起来很粗鲁。 如果你提供更好的,我会很高兴。

boolean ignoreNext;

yourEditTextView.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        if (!ignoreNext 
            && count - before > 1 
            && charSequence instanceof SpannableStringBuilder) {
            String text = charSequence.toString();
            SpannableStringBuilder s = (SpannableStringBuilder) charSequence;
            s.clear();
            ignoreNext = true;
            s.append(text);
            ignoreNext = false;
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
});

您必须像这样从 html 设置文本:

myEditText.setText(Html.fromHtml(myHtmlString));

暂无
暂无

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

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