web-dev-qa-db-ja.com

横向きでソフトキーボード入力のフルスクリーン編集ビューを無効にしますか?

ソフトキーボードを使用するAndroidデバイスでは、横画面モードでフルスクリーンキーボード編集ビュー(下図参照)が表示されないようにします(つまり、ソフトキーボード自体とその背後のビューのみを表示します) 。

これはInputMethodServicesetExtractViewShown(false)メソッドを使用して実現できると思いますが、このデフォルトインスタンスにアクセスできず、カスタム入力メソッドを実装したくありません。

Android fullscreen editing view

追加するために編集:入力先のビューはTextView(カスタムView実装のInputConnectionではありません)なので、Android:imeOptions="flagNoExtractUi"ここでは機能しません。

221
jnic

最終的に私自身の質問に答えました:

抽出UI(フルスクリーン編集モード)は、入力接続が接続された時点で無効にできます。

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}
164
jnic

これを行うには、アクティビティ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 をご覧ください。

96
pbaranski

プロパティAndroid:imeOptions="flagNoExtractUi"EditTextファイルの各XMLに追加します。

62

上記の答えは、動的に追加されたEditTextの解決策を見つけるのに役立ちました。

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
50
Abdo

Android:imeOptions="flagNoFullscreen"を使用して、その機能を実現します。

37
ridoy

また、プログラムで複数のimeOptionsを組み合わせたい場合は、|を使用できます。構文。

たとえば、ランドスケープの全画面編集ビューを無効にし、キーボードの「次へ」キーを「OK」(ACTION_DONE)に置き換えるには、次を使用できます。

editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
11
Maxime Ancelin

IMEを直接変更する場合は、 onUpdateExtractingVisibility をオーバーライドすることにより、IMDがExtractedViewを表示しないようにすることができます。

@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
    ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
    super.onUpdateExtractingVisibility(ei);
}
9
ObsidianX

私はそれが少し遅れていることを知っていますが、まだ興味がある人のために、私の解決策があります:私の場合、私は風景を持っていました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"  />

乾杯!

5

私の解決策:

Android:imeOptions="flagNoExtractUi|flagNoFullscreen"
2
dastan

以下を使用できます。

Android:imeOptions="flagNoFullscreen" 

編集テキストで

2
Thientvse

呼び出してソフトキーボードを非表示にし、検索ビューからフォーカスをクリアできます。

public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

super.clearFocus();
0
mohamed elagamy