【问题标题】:User text input on android without using XML layout在不使用 XML 布局的情况下在 android 上输入用户文本
【发布时间】:2014-10-03 15:21:54
【问题描述】:

好吧,我放弃了 有没有办法在不使用 XML 布局和 findViewById(R.id.editText1) 之类的所有东西的情况下调用用户文本输入(出现在屏幕上的键盘)? 也许某种 onEditListener?或类似的东西......

【问题讨论】:

  • 为什么不想使用 XML?
  • 您为什么不想使用 XML 布局。这是用于布局的最佳方式,因为它可以比尝试通过代码更轻松地处理屏幕等不同设备,与尝试任何其他方式相比,XML 布局具有更多的控制力和可读性
  • 我正在创建某种自己的引擎,并且已经用没有布局的 java 制作了所有东西,如按钮、列表框和其他东西,我想以这种风格结束,不想结合。

标签: java android input


【解决方案1】:

我找到了一种方法来做到这一点。 首先,我使用 SurfaceView(因为它将成为一个游戏项目),我将其设为 FocusableInTouchMode(true); 然后我将 OnKeyListener 设置到我需要的地方:

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;
            }
        });

setName.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);

但是在我做了所有这些东西之后,我发现了一个令人不快的问题: 它不捕捉来自西里尔语言的事件......知道如何得到它吗?谢谢。

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2015-02-27
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多