2014-10-03 26 views
-1

好吧,我放弃 有没有办法来调用用户的文本输入(与出现在屏幕上的键盘),而不使用XML布局,所有这些东西像findViewById(R.id .editText1)? 也许某种onEditListener?或这样的事情...用户的文本输入,而不使用XML布局

+1

为什么你不想使用XML? – 2014-10-03 15:24:23

+1

为什么你不想使用XML布局。这是不是试图通过代码来执行它使用的布局,因为它可以处理像屏幕上的不同的设备更容易的最好的事情,你必须从XML布局更多的控制和可读性比尝试任何其他方式 – Boardy 2014-10-03 15:26:14

+0

进出口创造一些一种自己的引擎,并且已经使所有东西像按钮,列表框和其他东西只与java没有布局,我想结束这种风格,不想结合。 – 2014-10-03 15:26:28

回答

1

我已经找到一种方法来做到这一点。 首先我使用一个SurfaceView(cos itsgonna是一个游戏项目),并且使它成为FocusableInTouchMode(true); 然后我setOnKeyListenerto我查看在地方,我需要它:

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:

imm.showSoftInput(mContext.getGameView(), InputMethodManager.SHOW_FORCED); 

当想删除它使用:

private InputMethodManager imm; 
imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 

ADN WHN我需要的软键盘我叫它

imm.hideSoftInputFromWindow((mContext.getGameView().getWindowToken()), 0); 

但我做了后所有这些东西,我发现一个不愉快的问题: 它不捕获西里尔语言事件...任何想法如何得到它?谢谢。

相关问题