アンドロイド:HTCの欲望のソフトキーボード制御
質問
私は行くか、閉じられ、計算クラスを実行することを完了]ボタンを持っていたテンキーを望んでいました。開始する場所にcommonwareから先端のおかげで私は、これはエミュレータ上で美しく取り組みました。それから私は、テストのための私のHTCの欲望へのそれをロードするために来て、それがすべてでは動作しません。私はそれはそれ自身のIMEを持つため、HTCセンスでなければなりませんが、確かにHTCの携帯電話上でこの作品を作るための方法がなければならないと確信していますか?他の誰この問題を回避するために管理?
解決
私は、私はあなたがHTC信じられないほどに見ていると思うものを複製することができます。
必ずしもすべてのソフトキーボードは、IMEのアクションボタンをサポートします。グラフィティソフト「キーボード」などのいくつかは、まったくのボタンを有していなくてもよい、単独のIMEアクションボタンをしましょう。 A付属のキーボードのようにアクションボタンを要するについては何も言いませんにでも互換性の定義文書デバイスます。
そのため、あなたはIMEのアクションボタンに頼るべきではありません。それがあれば、ユーザーはそれを使用することができます。しかし、常にあなたの目標が何であれ達成するためのいくつかの他の手段を持っています。
他のヒント
私はonEditorActionListenerを使用して行わ/ GO / RETURNボタンが押されたかどうかを検出するが、うまくIMEオプションを受け入れる任意のキーボードなどのように、カバーHTCキーボードにIMEのオプションとキーイベントをチェックしています。
(このコードは、IMEのオプションを持っている任意のキーボードだけでなくとしてHTC信じられないほどのキーボードのために働く)
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;
}
}
});
私はinputTypeでのEditTextを使用していた=「数」とアシャのソリューションを変更することで問題を解決します:
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.clearFocus();
//Stupid keyboard 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;
}
}
};
はフォーカスがテンキーの表示を停止するために除去しました。ソフトキーボードがさえクリアフォーカスの後にまだ存在していたので、IMMが必要であった。