66
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AndroidアプリのEditTextを含む画面でキーボードを非表示にする

Posted at

AndroidアプリでEditTextがある画面では、画面を開いたときにEditTextにフォーカスが当たり、ソフトウェアキーボードが表示されます。
画面の下のほうまで表示したい場合などにソフトウェアキーボードを表示しないようにするには、以下のような方法があります。

EditTextからフォーカスをはずす

TextViewなどのほかのビューにフォーカスを当てます。
ビューの子要素にrequestFocusタグを入れることで、アクティビティ表示時にそのビューがフォーカスされます。
この際、フォーカスを当てるビューにfocusable``focusableInTouchModeをそれぞれ指定します。

<EditText
    ... />

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

こちらで紹介されている方法と同様です。

ただし、EditTextからフォーカスが外れるので、場合によっては目立たなくなったり、入力欄であることがわかりにくくなってしまうことがあります。
フォーカスを当てつつキーボードも表示しないようにするには、次のようにします。

EditTextにフォーカスした状態でキーボードを非表示にする

windowSoftInputModeを指定することで、アクティビティ起動時のフォーカスでキーボードが表示されないようにすることができます。
これにより、EditTextにフォーカスが当たっていて、ソフトウェアキーボードが表示されない状態にすることができます。
AndroidManifest.xmlで設定しておく方法と、Javaのコードから指定する方法があります。

AndroidManifest.xmlで設定する場合

AndroidManifest.xml
<manifest ... >
    <application
        ... >
        ...
        <activity
            android:name="hoge.MyActivity"
            android:windowSoftInputMode="stateAlwaysHidden" >
        </activity>
    </application>
</manifest>

Javaのコードから指定する場合

こちらで紹介されている方法と同様です。

MyActivity.java
protected void onCreate(Bundle savedInstanceState) {  
  ...
  getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
  ...
} 

こちらの説明ではsetContentViewの前に実行しなければ有効にならないと記載されていますが、手元で試したところではそうでなくても有効にすることができました。
(Android4.4.2で確認しました)


ソフトウェアキーボードの表示/非表示はadjustment optionとも併用可能です。
例えば、adjustResizeを同時に設定する場合は、
AndroidManifest.xmlで設定する場合は

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

Javaのコードから指定する場合は

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

のようにすると適用できます。


※ 以下のサイトを参考にしました(文中のリンクと同じです)
【Android】画面起動後にフォーカスを当てるViewを指定するのと指定した文字の後にカーソルを移動する - Furudateのブログ
Activity起動時にEditTextのソフトウェアキーボードを表示しない方法 | ichRevoのブログ
Y.A.M の 雑記帳: Android 自動でソフトキーボードが出るのを防ぐ
WindowManager.LayoutParams | Android Developers

66
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?