画面が表示されたときにフィールドのオートフォーカス/キーボードポップアップを削除する方法


105

最初のフィールドがEditTextである画面があり、起動時にフォーカスを取得し、数値入力タイプもポップアップします。これは非常に迷惑です

アクティビティが開始されたときにフォーカスが取得されない、および/または入力パネルが表示されないことを確認するにはどうすればよいですか?

回答:


157
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

または

アプリケーションタグで、以下のようにマニフェストファイルのアクティビティプロパティを設定します。

android:windowSoftInputMode="stateHidden"

AndroidManifest.xmlファイルでandroid:windowSoftInputModeを設定すると、他の値とORをとることができます。モードは通常、単一の値を意味しますが、この場合、値はフラグのコレクションです。値の説明:Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
Jeff Muir

145

アプリケーションマニフェストファイルに移動し、自動キーボードポップアップを無効にするアクティビティのこの行を記述します。

android:windowSoftInputMode="stateHidden"

私のために働いていませんでした。activity_main.xmlに入れます。これは、onCreate()に配置すると完全に機能しました。getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
glez

20

プログラムでキーボードを表示しないようにするが、デフォルトのウィジェットは引き続きフォーカス呼び出しを受け取るには:

getWindow().setSoftInputMode(WindowManager.
                             LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

onResume()


11
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

内部上記メソッドを呼び出すのonCreate() .IT防止softKeyboardをユーザが選択しない限り表示するためのEditTextをすることによってtapping or clicking.

または単にandroid:windowSoftInputMode="stateHidden"アクティビティタグを追加しますManifest.xml


10

これは通常混乱です。私が最初に試みることは、を介して別のビューでフォーカスを盗もうとすることです。また、focusableおよびfocusableInTouchModeが必要です。

<TextView
  ...
  android:focusable="true"
  android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>

これは機能します。これはよりクリーンなアプローチだと思いますが、それはまたあなたの状態がどのようにあるかにも依存します。私はこれを受け入れます。
JaydeepW 2018

5

別のビューをつかんでください。デフォルトでは、レイアウトがインフレートされると、最初のフォーカス可能なビューがフォーカスされます。XMLを介して別のビューへのフォーカスをリクエストできます。

<TextView
    android:layout_width="wrap_parent"
    android:layout_height="wrap_content"
    android:text="Some other view">

    <requestFocus />
</TextView>

これはどのビューでも機能します。

プログラムで実行する場合は、を使用できますview.requestFocus()


0
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

3
StackOverflowへようこそ!これは他のフォーラムとは異なり、回答を変更したい場合は、editリンクをクリックして変更します。また、コードを選択し、[コードサンプル]ボタンを使用する{}か、を押して、コードをフォーマットしてみてくださいCtrl+K
Peter Lang

0

android:windowSoftInputMode="stateHidden"マニフェストでアクティビティに追加すると、アクティビティを起動しているとき、またはGoogleが言うように、キーボードだけが非表示になります

ユーザーが別のアクティビティーを離れたためにアクティビティーに戻るのではなく、そのアクティビティーに肯定的に移動したとき

ユーザーが戻るボタンを押して他のアクティビティからアクティビティに戻ったときにもキーボードを非表示にするには、 android:windowSoftInputMode="stateAlwaysHidden"


-1

これを試したことがなく、プログラミングコンピューターの近くにもありませんが、プログラムによって親ビューにフォーカスを送信するか、その性質の何かがトリックを実行する可能性があると思います。思い


1
私はそれを試しましたが、うまくいきません。私.requestFocus();はボタンを呼び出しましたが、それでもキーボードのポップアップが表示されました。
Pentium10 2010年

コメントとしてコメントを追加できます
Alberto M
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.