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()」でフォーカスを外すとか。
あれこれだけど、この辺、うまくいかないこともあったり。
そんなこんなー