計算クラスを閉じて実行する[実行]または[完了]ボタンのあるテンキーが必要でした。どこから始めればよいかについてのcommonwareからのヒントのおかげで、エミュレーターでこれを美しく機能させることができました。それから私はそれをテストしたいという私のHTCの欲求にロードするようになりました、そしてそれはまったく機能しません。それはそれ自身のimeを持っているHTCセンスのためであるに違いないと確信していますが、HTC電話でこれを機能させる方法は確かにあるに違いありませんか?他の誰かがこの問題を回避することができましたか?
3 に答える
HTCIncredibleで見ていると思うものを再現できます。
すべてのソフトキーボードがIMEアクションボタンをサポートするわけではありません。Graffitiのソフトな「キーボード」のように、IMEアクションボタンは言うまでもなく、ボタンがまったくないものもあります。互換性定義ドキュメントでさえ、デバイスに付属のキーボードにそのようなアクションボタンを要求することについては何も述べていません。
したがって、IMEアクションボタンに依存しないでください。そこにあれば、ユーザーはそれを使用できます。ただし、目標が何であれ、それを達成するための他の手段を常に用意してください。
onEditorActionListenerを使用してDONE/GO / RETURNボタンが押されたかどうかを検出していますが、IMEオプションとKeyEventsをチェックして、HTCキーボードとIMEオプションを受け入れるキーボードをカバーしています。
(このコードは、HTC Incredibleキーボードだけでなく、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;
}
}
});
私はinputType="number"でEditTextを使用していて、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.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が必要でした。