I have an activity with a search box (EditText
) on the top, and a ListView below. Whenever the activity starts, the EditText always has focus and bring up the keybo
you must have mentioned <requestFocus>
tag in your editTiext field
in XML remove that and run again
Set in your parent layout next attributes:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
And now, when activity
starts this layout getting default focus.
Also we can remove focus from children views in runtime (e.g. after finishing child editing):
findViewById(R.id.mainLayout).requestFocus();
or
Look in the AndroidManifest.xml element.
android:windowSoftInputMode="stateHidden"
It always hide key board when entering the activity.
You could use set focus on container view. Add to container android:focusableInTouchMode="true", android:focusable="true" and tag requestFocus example:
<RelativeLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:focusable="true">
<requestFocus/>
<EditText
android:id="@+id/edit_text_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
Add the android:focusable="true" and android:focusableInTouchMode="true" elements in the parent layout of EditText as follow;
android:id="@+id/linearLayout7" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true" android:focusableInTouchMode="true">
I think, it should help you.
This will do your work:
android:windowSoftInputMode="stateHidden"
You can try this:
editText.clearFocus();
where ever you want to clear focus.