EditTextがあるときいきなり勝手にソフトキーボードが表示されないようにする – Android

[PR]

Androidでは非常にベーシックに対応に迫られるSDKの親切心からくる問題。
やりかたも色々あってどうしようっていう感じの。

2014年の夏現在、個人的にはManifestの対象Activityに「windowSoftInputMode」属性を追加がベスト!

<activity
    android:name=".UhyoActivity"
    android:configChanges="orientation|screenSize"
    android:label="@string/uhyo_name"
    android:windowSoftInputMode="stateHidden|adjustResize" >
</activity>

「stateHidden」で表示を防止できます。必要に応じて「adjustResize」も追加する形。
これが一番落ち着く気がします。

同じことをJava内で書くなら、

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

引数の「WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN」はWindowManagerなしでもいいけど、「LayoutParams」って他でも使うケースもあるので、なんとなく「WindowManager」つけてます。別に要らない。

import文はこれ。
import android.view.WindowManager;

これ以外には
同じレイアウト内のEditText以外のViewにフォーカスを当てる

<TextView
   android:id="@+id/TextView01"
   android:layout_width=”wrap_content”
   android:layout_height=”wrap_content”
   android:focusable="true" 
   android:focusableInTouchMode="true"   
>
   <requestFocus /> 
</TextView>

この中の「<requestFocus /> 」をJava側で「tv.requestFocus()」でフォーカスを移動するとか。
むしろ逆にEditTextに対して、「et.clearFocus()」でフォーカスを外すとか。
あれこれだけど、この辺、うまくいかないこともあったり。

そんなこんなー