[解決済み] 2.3でのDone SoftInput Action Labelを使った多行編集テキスト
質問
複数行の
EditText
を表示し、Android 2.3のIME Action Label "Done"を使用する方法はありますか?
Android 2.2 では、エンターボタンは IME アクションラベル "Done"を表示するので、これは問題ではありません (
android:imeActionLabel="actionDone"
) を表示し、クリックされるとソフト入力を解除します。
を設定する場合
EditText
を構成する場合、Android 2.3 ではソフト入力キーボードの "Done" アクションを表示する機能が削除されました。
私は、ソフト入力の入力ボタンの動作を変更するために
KeyListener
を使用して、ソフト入力エンター ボタンの動作を変更することができましたが、エンター ボタンはまだエンター キーのように見えます。
以下は
EditText
<EditText
android:id="@+id/Comment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="0dp"
android:lines="3"
android:maxLines="3"
android:minLines="3"
android:maxLength="60"
android:scrollHorizontally="false"
android:hint="hint"
android:gravity="top|left"
android:textColor="#888"
android:textSize="14dp"
/>
<!-- android:inputType="text" will kill the multiline on 2.3! -->
<!-- android:imeOptions="actionDone" switches to a "t9" like soft input -->
を確認すると
inputType
の値を確認すると、アクティビティでコンテンツビューを設定するロード後に、次のように表示されます。
inputType = 0x20001
というのは。
-
クラス =
TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_NORMAL
-
フラグ =
InputType.TYPE_TEXT_FLAG_MULTI_LINE
どのように解決するのですか?
さて、再読したところ
TextView
と
EditorInfo
のドキュメントを見ると、プラットフォームが強制的に
IME_FLAG_NO_ENTER_ACTION
を強制することが明らかになりました。
注意点として
TextView
は自動的に
はこのフラグを設定します。
を自動的に設定します。
私の解決策は、サブクラス
EditText
をサブクラス化し、プラットフォームが設定した後にIMEオプションを調整することです。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection connection = super.onCreateInputConnection(outAttrs);
int imeActions = outAttrs.imeOptions&EditorInfo.IME_MASK_ACTION;
if ((imeActions&EditorInfo.IME_ACTION_DONE) != 0) {
// clear the existing action
outAttrs.imeOptions ^= imeActions;
// set the DONE action
outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE;
}
if ((outAttrs.imeOptions&EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) {
outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
}
return connection;
}
上記では、強制的に
IME_ACTION_DONE
を強制していますが、これは面倒なレイアウト設定によって達成できることです。
関連
-
[解決済み] Android Webview - キャッシュを完全に削除する
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] フラグメント間の値の受け渡し方法
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidのEditTextビューで複数行を許可しますか?
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] 文字列リソースにHTML?