【发布时间】:2014-05-05 05:02:01
【问题描述】:
我正在尝试实现一个简单的富文本编辑器。该代码适用于字母和数字,但在我按空格/回车/删除之前键入的最后一个字符在空格或回车被附加之前重复(附加)。
示例:如果我输入 (hello world.),它会显示 (helloo world.)。
有什么办法可以防止这个问题发生吗?
我的活动代码是:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
textMessage = (EditText) findViewById(R.id.editText1);
textMessage.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
char c = s.charAt(s.length() - 1);
Log.d("Value of c::", "" + c);
if (c == '\n') {
content.append("<br>");
tv.setText(Html.fromHtml(content.toString()));
} else {
content.append(c);
tv.setText(Html.fromHtml(content.toString()));
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
});
我也尝试过 onKey() 但它不适用于软键盘。
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("pressed" + keyCode);
if (keyCode == KeyEvent.KEYCODE_DEL){
content.deleteCharAt(content.length()); }
else if (keyCode == KeyEvent.KEYCODE_ENTER){
content.append("</br>");
System.out.println("enter pressed"); }
else { char c = (char) keyCode;
Log.d("Keycode cast to char:::::", "" + c);
content.append(); }
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
System.out.println("pressed" + keyCode);
if (keyCode == KeyEvent.KEYCODE_DEL){
content.deleteCharAt(content.length()); }
else if (keyCode == KeyEvent.KEYCODE_ENTER){
content.append("</br>");
System.out.println("enter pressed"); }
else
{ char c = (char) keyCode;
Log.d("Keycode cast to char:::::", "" + c);
content.append(); }
return false; }
【问题讨论】:
-
本网站不是针对初学者问题的帮助台。我们不是来修复您的代码的。它更像是一个编程的维基百科,一个很好的问题和答案的巨大集合。它主要对谷歌搜索者有用。它也不是论坛。
-
但常见问题解答并没有说这是一个适合初学者的地方。它说这是一个“专业和狂热的程序员”的地方。是的,你来错地方了,如果你想让人们修复你的代码,最好去rentacoder.com。或者去专家交流会,也许?
-
@sashoalm Stack Overflow 也适用于想要学习并为此付出努力的初学者。
-
仅仅提供保证并不像说“我尝试过 X,但 Y 发生了。我观察到了我不理解的 Z”等有用。如果你'd 以更传统的方式格式化您的代码。您的 IDE 应该能够自动为您执行此操作。
标签: android android-edittext textwatcher