![](/img/trans.png)
[英]Android EditText copy and paste from webpage, pastes formatted text
[英]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(" ", " ");
charSequence = charSequence.toString().replaceAll("&", " ");
}
@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.