ソフトキーボードを使用するAndroidデバイスでは、横画面モードでフルスクリーンキーボード編集ビュー(下図参照)が表示されないようにします(つまり、ソフトキーボード自体とその背後のビューのみを表示します) 。
これはInputMethodService
のsetExtractViewShown(false)
メソッドを使用して実現できると思いますが、このデフォルトインスタンスにアクセスできず、カスタム入力メソッドを実装したくありません。
追加するために編集:入力先のビューはTextView
(カスタムView
実装のInputConnection
ではありません)なので、Android:imeOptions="flagNoExtractUi"
ここでは機能しません。
私最終的に私自身の質問に答えました:
抽出UI(フルスクリーン編集モード)は、入力接続が接続された時点で無効にできます。
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;
// etc.
}
これを行うには、アクティビティxmlに移動し、Android:imeOptions="flagNoExtractUi"
をコードに貼り付けます。しかし、どこに貼り付ければよいでしょうか?サンプルアクティビティxmlのコードとEditTextを見てください:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
>
<EditText
Android:imeOptions="flagNoExtractUi"
Android:id="@+id/etTextInAct"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:ems="10" >
<requestFocus />
</EditText>
</LinearLayout>
キーボードのカスタマイズオプションがさらに必要な場合は、 http://developer.Android.com/guide/topics/ui/controls/text.html をご覧ください。
プロパティAndroid:imeOptions="flagNoExtractUi"
をEditText
ファイルの各XML
に追加します。
上記の答えは、動的に追加されたEditTextの解決策を見つけるのに役立ちました。
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Android:imeOptions="flagNoFullscreen"
を使用して、その機能を実現します。
また、プログラムで複数のimeOptionsを組み合わせたい場合は、|を使用できます。構文。
たとえば、ランドスケープの全画面編集ビューを無効にし、キーボードの「次へ」キーを「OK」(ACTION_DONE)に置き換えるには、次を使用できます。
editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
IMEを直接変更する場合は、 onUpdateExtractingVisibility
をオーバーライドすることにより、IMDがExtractedViewを表示しないようにすることができます。
@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
super.onUpdateExtractingVisibility(ei);
}
私はそれが少し遅れていることを知っていますが、まだ興味がある人のために、私の解決策があります:私の場合、私は風景を持っていましたActivityその上にEditTextとこの検索でオートコンプリート機能を実装する必要がありましたActivity、キーボードのオーバーラップにより、ユーザーがRecyclerViewの結果を見ることができないという問題が発生しました。だから私はこれを持っていることになりましたEditText私のレイアウトで:
<EditText
Android:layout_width="match_parent"
Android:layout_height="?actionBarSize"
Android:id="@+id/main_search_et"
Android:imeOptions="actionSearch|flagNoExtractUi"
Android:inputType="text" />
乾杯!
私の解決策:
Android:imeOptions="flagNoExtractUi|flagNoFullscreen"
以下を使用できます。
Android:imeOptions="flagNoFullscreen"
編集テキストで
呼び出してソフトキーボードを非表示にし、検索ビューからフォーカスをクリアできます。
public void hideKeyboard(View view) {
InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
super.clearFocus();