2012-04-07 5 views
4

にアップグレードした後、ソフトキーボードの入力を「完了」ボタンに変更することはできません。 inputField.setImeOptions(EditorInfo.IME_ACTION_DONE); 私のソフトキーボードにカラジャリターン​​ではなく「完了」キーを表示させます。ジンジャーブレッド

私の携帯電話(Samsung Galaxy S)をジンジャーブレッドにアップデートして以来、このコード行は効果がありません。

アイデア?

+0

XMLで設定しようとしましたか? –

+1

動的に作成された編集テキストです。しかし、私は試してみる...確かにこれを動的に行う方法がなければならない? – jason

+0

動的に作成されたとしても、実行時にXMLを拡張することができます。 ['View.inflate()'](http://developer.android.com/reference/android/view/View.html#inflate%28android.content.Context,%20int,%20android.view.ViewGroup%29を参照してください。 ) –

答えて

5

私は同じ問題を研究しています。あなたのデバイスのIME(インプットメソッドエディタ)は故障していますので、ソフトキーボードの終了ボタンやその次のボタンは表示されません。 HTCセンスには独自のソフトキーボードが搭載されており、ime指令は認識されません。他にもあなたのsamsungは明らかに1つです。これは私がアンドロイドの断片化に長い間頭を振っているのは初めてです。

私はそれをXMLで設定し、膨らませて、ヘルパークラスと他のもののヒープを作成しようとしました。私はそれが単に機能しないことを知るために安心しました。

キーボードエディタで入力を完了するのではなく、完了ボタンを追加する必要があります。私はそれらを整列させるために相対レイアウトを使って編集テキストの最後に追加します。うーん、その機能を持っている人のためのIMEコードを残して....これは、唯一の迅速なソリューションです、他のあなたのアプリのための完全なカスタムソフトキーボードを書いている。

+0

私は 'singleLine(true)'への入力をある程度成功させましたが、それでもカラエージリターンのようですが、完了ボタンとして検出されました – jason

+0

アンドロイド:singleLine = "true"が働いています!ありがとう、ジェイソン..私は緊急の場合には、とにかく私の終了ボタンを残すと思います。 – Kickaha

9

私はこの問題も見ており、あなたがinputTypeを設定していないときに発生すると思います。実際には、inputTypeEditorInfo.TYPE_NULL(デフォルト)に設定されている場合、すべてのimeOptionsプロパティ(他のものと同様)は完全に無視されます。

は、したがって、これらのいずれかを与えるショットが(私はnextを選んだが、あなたはどのタイプを置くことができる):

XML:

android:inputType="text" 
    android:imeOptions="actionNext" 

JAVA

text.setInputType(EditorInfo.TYPE_CLASS_TEXT); 
    text.setImeOptions(EditorInfo.IME_ACTION_NEXT); 

そして、あなたが本当にナットをしたい場合は、setImeActionLabel('Add', SOME_ID)を使用して完全に構成することができますアクションキー(xmlの等価物もあります)

と言われています。私はあなたの個々のデバイスについて完全に間違っている可能性がありますが、これはテストが簡単で、共有する必要があるので、常に問題を解決するようです。

-1

メソッドTextView.setInputTypeをチェックし、このメソッドの最後にInputMethodManagerがキーボードを再起動します。これは、imeOptionsを変更するトリガーです。ではなく、 InputType.TYPE_NULLです。

private void changeInputTypeAndImeOptions(EditText fieldValue, int inputType, int imeOption) { 
    if (inputType == InputType.TYPE_NULL) inputType = fieldValue.getInputType(); 
    fieldValue.setImeOptions(imeOption | EditorInfo.IME_FLAG_NO_FULLSCREEN); 
    //Makes the trigger for the imeOptions to change while typing! 
    //fieldValue.setInputType(InputType.TYPE_NULL); 
    fieldValue.setInputType(inputType); 
    InputMethodManager imm = (InputMethodManager) 
      mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
    if (imm != null) imm.restartInput(fieldValue); 
} 

注:IMMを再起動した方が良いよう

が同じ以前の値とsetInputTypeを設定し、影響を与えるものではありません(これはキロバイトを閉じていない、ボタンのみをリフレッシュします)。

また、fieldValue.setInputType(InputType.TYPE_NULL);は、複数のセット中に戻りボタンが表示されるという悪影響があります。そのため、コメントされており、削除する必要があります。 immでkbを再起動する方が良い。

+0

以前に設定されたimeオプションを変更しない – Sudhasri

関連する問題