安卓上不使用XML布局的java用户文本输入 1 月 Questions & Answers 277 好吧,我放弃 有没有一种方法可以在不使用XML布局和findViewById(R.id.editText1)之类的东西的情况下调用用户文本输入(显示在屏幕键盘上)? 也许是某种独白?或者像这样的
# 1 楼答案 我找到了一个方法。 首先,我使用了SurfaceView(因为这将是一个游戏项目),我将其设置为FocusableInTouchMode(真); 然后我将KeyListener设置到我需要的位置: mContext.getGameView().setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { char pressedKey = (char) event.getUnicodeChar(); if(event.getAction() == KeyEvent.ACTION_DOWN){ if(event.getUnicodeChar() == 0){ setName.setTitle(removeLastChar(setName.getTitle())); } else setName.setTitle(setName.getTitle() + (char) event.getUnicodeChar());} return false; } }); 设定名称。setTitle只是一个包含文本的框(矩形); 然后我创建了一个InputMethodManager: private InputMethodManager imm; imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 当我需要软键盘时,我称之为: imm.showSoftInput(mContext.getGameView(), InputMethodManager.SHOW_FORCED); 如果要删除它,请使用: imm.hideSoftInputFromWindow((mContext.getGameView().getWindowToken()), 0); 但在我做了这些东西之后,我发现了一个令人不快的问题: 它不会捕捉西里尔语中的事件。。。知道怎么弄吗?谢谢
# 1 楼答案
我找到了一个方法。 首先,我使用了SurfaceView(因为这将是一个游戏项目),我将其设置为FocusableInTouchMode(真); 然后我将KeyListener设置到我需要的位置:
设定名称。setTitle只是一个包含文本的框(矩形); 然后我创建了一个InputMethodManager:
当我需要软键盘时,我称之为:
如果要删除它,请使用:
但在我做了这些东西之后,我发现了一个令人不快的问题: 它不会捕捉西里尔语中的事件。。。知道怎么弄吗?谢谢