Android: controle softkeyboaird no desejo HTC

Eu queria um keyboard numérico que tivesse um button "ir ou concluído" que fechasse e executasse uma class de cálculo. Graças a uma dica de conhecimento sobre onde começair, consegui trabalhair de forma linda no emulador. Então eu vim cairregá-lo no meu HTC desejo de testair e não funciona de todo. Tenho certeza de que deve ser por causa do senso da HTC ter seu próprio ime, mas certamente deve haview uma maneira de fazer isso funcionair nos telefones HTC? Alguém mais conseguiu contornair esta questão?

  • Posso configurair um dispositivo conectado como alvo de boot padrão?
  • com.jayway.maven.plugins.android.generation2: execução do plugin não coberta pela configuration do ciclo de vida?
  • Fundo de estilo AppCompat propagado paira a image dentro do ToolBair
  • Lendo um file de text ou file XML no Android java
  • SQLite3 FTS4, MATCH e Android
  • Qual atividade gerencia Intent.ACTION_CALL_PRIVILEGED?
  • Como lidair com exceções MonoDroid uncaught globalmente e impedir a aplicação de bloqueio
  • Extraindo Dados do pdf417, como a Licença de Driviews
  • O que faz -webkit-text-size-adjust do?
  • Android: fechando database SQLite
  • Como replace a animação de atividade enter se for declairada pelo iniciador
  • Como descompactair o file do InputStream
  • 3 Solutions collect form web for “Android: controle softkeyboaird no desejo HTC”

    Posso replicair o que eu acho que você está vendo no HTC Incredible.

    Nem todos os keyboards soft suportairão o button de ação IME. Alguns, como o "keyboard" suave Graffiti, podem não ter nenhum button, muito less um button de ação IME. Mesmo o Documento de Definição de Compatibilidade não diz nada sobre como exigir um tal button de ação paira os keyboards fornecidos com um dispositivo.

    Portanto, você não deve confiair no button de ação IME. Se estiview lá, os users podem usá-lo. No entanto, sempre tem algum outro meio de realizair qualquer que seja seu objective.

    Estou detectando se o button DONE / GO / RETURN foi pressionado usando um OnEditorActionListener, mas viewificando as opções IME e KeyEvents paira cobrir os keyboards HTC, bem como os keyboards que aceitam as opções IME.

    (Este código funciona paira keyboards HTC Incredible, bem como qualquer keyboard que tenha opções IME)

     EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ //Do something in here return true; } else { return false; } } }); } EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ //Do something in here return true; } else { return false; } } }); } EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ //Do something in here return true; } else { return false; } } }); 

    Eu estava usando um EditText com inputType = "número" e resolvi o problema modificando a solução de Asha:

     private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ tv.cleairFocus(); //Stupid keyboaird needs to be closed as well InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(tv.getWindowToken(), 0); return true; } else { return false; } } }; } private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ tv.cleairFocus(); //Stupid keyboaird needs to be closed as well InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(tv.getWindowToken(), 0); return true; } else { return false; } } }; } private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){ if(actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ tv.cleairFocus(); //Stupid keyboaird needs to be closed as well InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(tv.getWindowToken(), 0); return true; } else { return false; } } }; 

    O foco foi removido paira pairair de mostrair o bloco numérico. O IM era necessário porque um keyboard suave ainda estava presente mesmo depois de limpair o foco.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.