2009-10-08 14 views
24

私がやりたいことは、仮想キーボードに表示されるデフォルトの「完了」ラベルを変更することです。ここで私は運なしで試してみたものです:Android:setImeActionLabelの使用方法を理解できません

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_DONE); 
mSearchInput.setImeActionLabel(getString(R.string.search_action_label), EditorInfo.IME_ACTION_DONE); 

I 、しかし、これで、そのボタンのクリックを処理するために午前できる:

mSearchInput.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      performSearch(); 
      return true; 
     } 
     return false; 
    } 
}); 

私は方法についての無知です私はそのボタンのラベルを現時点で変更することができます。

答えて

25

imeActionLabelは、フルスクリーンIMEモード(電話機が横長の場合)の右上に表示されるボタンのラベルを設定します。ボタンをキーボードの右下に変更する場合は、特定のフラグをimeOptionsに渡すことができます。

私が知っている限り、そのボタンでは特定のアクションセットに限定されています(サポートされているフラグの一覧についてはhereを参照してください)。しかし、検索ボタンが必要なので、すべて行う必要があります

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH); 

マインドあなたは、そのボタンの正確な外観は、入力方法に依存します:少しあなたの最初の行を調整し、IME_ACTION_SEARCHを使用することです。デフォルトのAndroidキーボードには検索フラグの拡大表示が表示され、Touch Input(HTCのキーボード)はそのフラグを完全に認識していないように見えますが、戻りボタンは表示されます。

+0

これは好奇心です。エミュレータでランドスケープに切り替えると、ソフトキーボードが表示されなくなります。 また、メッセージングアプリケーションでは、「完了」ボタンの代わりにスマイリー(「:-)」を挿入していることに気付きました。カスタムキーボードレイアウトを使用していますか? ちなみに、チップをありがとう。 – Felix

+3

エミュレータが横向きモードで公開されている物理キーボードをシミュレートするため、ソフトキーボードが表示されません(開いた状態でソフトキーボードがG1に表示されないように)。キーボードを無効にするには、AVDのconfig.iniファイルを変更し、 'hw.keyboard = no'を追加します。 メッセージングアプリケーションに関しては、私はそのソースをチェックしました。スマイリーは 'inputType =" textShortMessage "の副産物だと思っています。" Send "ボタンがないのは' imeOptions = " flagNoEnterAction "'、しかし私は実際にそれをテストしていません。 Touch Inputは両方のフラグを無視しているようです。 – mernen

+2

元の質問のコードから、この "OR"コードを追加するだけで、物理キーボードの "return"ボタンを説明することができます:if(actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode()== KeyEvent.KEYCODE_ENTER ) – CircuitBreaker716