[英]How I can show soft keyboard on canvas and write on it in android
我试图通过android中的软键盘在画布上写。
我的问题是如何显示软键盘并处理它在画布上生成的事件。 我的代码是:
public class DrawView extends View {
Paint paint = new Paint();
private static final String LOGID = "MxView";
String message = "No key pressed yet.";
DrawView(Context context) {
super(context);
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawText(message, 5, 20, paint);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent ev) {
switch(keyCode) {
case KeyEvent.KEYCODE_ENTER:
message = "Key is Enter!";
Log.i(LOGID, message);
break;
case KeyEvent.KEYCODE_E:
message = "Key is E!";
Log.i(LOGID, message);
break;
default:
return false;
}
invalidate();
return true;
}
}
您可以通过在屏幕上提供“菜单”来实现此目的。 当用户选择该选项时,请执行以下操作。
第二种方法是通过以下代码查看软键盘。
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
这将显示软键盘,并从键盘获取参数,使用以下代码。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d("TEST", "Key Down :" + keyCode + " String : " + s);
s += (char) event.getUnicodeChar();
return super.onKeyDown(keyCode, event);
}
这里,“s”是存储按下值的String对象。
要隐藏键盘,
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(rel.getWindowToken(), 0);
这里, rel
是RelativeLayout
。 你可以在这里传递任何视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.