Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

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

<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

hishida
jrits
信頼と魅力のある先進のITをもとに、お客様のワークスタイル・イノベーションの実現を目指します。
http://www.jrits.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした