EyeQ Tech
EyeQ Tech

Reputation: 7358

How to clear focus for EditText?

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 keyboard which partially cover the ListView.

There's no other text view that can have focus. I want the EditText to have focus ONLY when the user touches it and start typing. I try to put clearFocus() in onCreateView, onViewCreated or onCreated, but no luck.

Upvotes: 43

Views: 63204

Answers (8)

saeed
saeed

Reputation: 1955

Add the android:focusable="true" and android:focusableInTouchMode="true" elements in the parent layout of EditText as follow;

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    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.

Upvotes: 2

Zia Ansari
Zia Ansari

Reputation: 51

You can try this:

editText.clearFocus();

where ever you want to clear focus.

Upvotes: 4

Djek-Grif
Djek-Grif

Reputation: 1516

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>

Upvotes: 6

Ajay S
Ajay S

Reputation: 48602

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.

Upvotes: 115

Kuldeep Sakhiya
Kuldeep Sakhiya

Reputation: 3252

This will do your work:

android:windowSoftInputMode="stateHidden"

Upvotes: -3

Roman Nazarevych
Roman Nazarevych

Reputation: 7703

Here is the answer EditText, clear focus on touch outside.

Or you can just write widget which will show only text with textView and onClickwill display dialog with EditText where you can edit this text/

Upvotes: 0

Usman Kurd
Usman Kurd

Reputation: 7023

you must have mentioned <requestFocus> tag in your editTiext field in XML remove that and run again

Upvotes: 4

moDev
moDev

Reputation: 5258

Try this

On your Activity Declaration in AndroidManifest.xml add the below code :

android:windowSoftInputMode="stateHidden"

It will prevent the keyboard to popup up when activity becomes visible.

Happy coding :)

Upvotes: -1

Related Questions