横向きのソフトキーボード入力の全画面編集ビューを無効にしますか?


237

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

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

Android全画面編集ビュー

追加用に編集:入力が行われるビューはTextViewViewカスタムInputConnection実装の場合)でandroid:imeOptions="flagNoExtractUi"はないため、ここでは機能しません。


それを見てみましょう。よかったですね。【これを見] [1] [1]:stackoverflow.com/questions/8648401/...
sonida

私は同様の問題を持っている:(あなたが任意のアイデアかもしれない?stackoverflow.com/questions/36914290/...
railwanderer

2
これをアプリ全体に適用する方法。xmlのすべてのedittextに属性値を追加することはしません。
Vikas Pandey

2
以下の回答の多くは、flagNoExtractUiまたはの使用を推奨していIME_FLAG_NO_EXTRACT_UIます。ただし、にIME_FLAG_NO_EXTRACT_UI対応するのドキュメントには、flagNoExtractUi「このフラグの使用は推奨されておらず、将来廃止される可能性がある」と記載されているためflagNoFullscreen、推奨されるオプションです。
ThomasW

回答:


178

私はついに自分の質問答えました:

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

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}

215
単にあなたのxmlファイルに入れてくださいandroid:imeOptions = "flagNoExtractUi"

1
jnic、ソフトキーボードのコードのどこでオーバーライドしたのですか?SoftKeyboard.java?私は同じオーバーライドを試してエラーを出しました。

14
あなたは、おそらく代わりに、これまでのオプションは、このように渡されたものを上書きのオプションにフラグを追加することをお勧めします:outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
ObsidianX

2
@ user726518アクションバーの検索ボックスアイテムにこの属性を適用する方法は?
Menna-Allah Sami

1
カスタムビューを使用してキーボードを処理する場合に機能するのは、唯一のものだけです。ありがとう!
ハーマン

109

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


64

ファイルのandroid:imeOptions="flagNoExtractUi"それぞれEditTextにプロパティを追加しXMLます。


1
この回答は短すぎ、SOの品質基準を満たしていません。OPだけでなくコミュニティにとっても役立つように、いくつかの追加説明を追加して改善してください。
Lorenzo Donati-Codidact.org 2013年

31
@LorenzoDonatiそれはまさにあなたがしなければならないことです...それは非常に単純な答えです。なぜなら、解決策は非常に単純であり、それは上記の答えとは異なる方法で実行するだけだからです。また、IMOの質問に答えない限り、答えが「短すぎる」ことはありません。
Michael Yaworski 2013年

1
申し訳ありませんが、これはSOコミュニティが考えていることではありません。回答はOPの問題を解決するために限定されるべきではなく、一般的にはすばらしい回答であるはずです。たとえば、これこれを参照してください。
Lorenzo Donati-Codidact.org 2013年

22
@LorenzoDonatiこれは非常に具体的な質問で、最終結果は1つだけです(ただし、複数の解決方法があります)。私の答えは、このページの他の答えへの追加です。このページの答えはすべて「OPの問題」に限定されています。これは、記述できる唯一の種類の答えだからです。私が言ったように、それは具体的でシンプルです。
Michael Yaworski 2013年

2
最後に、私は答えを見つけました。どうもありがとう@mike yaworski
Drx

53

上記の答えは、動的に追加されたEditTextのソリューションを理解するのに役立ちました。

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

37

android:imeOptions="flagNoFullscreen"その機能を実現するために使用します。


1
xmlで記述するための優れたアプローチ。私のために働く。ありがとう
Ahesanali Suthar

1
IME_FLAG_NO_EXTRACT_UI対応するのドキュメントには、flagNoExtractUi「このフラグの使用は推奨されておらず、将来廃止される可能性がある」と記載されているためflagNoFullscreen、推奨されるオプションです。
ThomasW

12

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

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

editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

9

IMEを直接変更している場合は、次のコードをオーバーライドすることで、ExtractedViewが表示されないようにすることができますonUpdateExtractingVisibility

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

6

私はそれが少し遅れていることを知っていますが、まだ興味がある人のために、ここに私の解決策があります:私の場合、その上にEditTextを含むランドスケープアクティビティがあり、この検索アクティビティにオートコンプリート機能を実装する必要がありました。キーボードは、ユーザーが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"  />

乾杯!



2

使用できます:

android:imeOptions="flagNoFullscreen" 

あなたのedittextで


1
これは答えですか?
artgb 2017

私はそれを試し、それは私のために働きます!(私のデバイスはandroid 4.1.2です)
Thientvse 2017

0

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

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

super.clearFocus();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.