Disable auto focus on edit text

≯℡__Kan透↙ 提交于 2019-11-29 20:24:31

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.

NO More work... just add android:windowSoftInputMode="stateAlwaysHidden" to activity tag of the Manifest.xml file .

If you want clear the default focus on the edit text then use the following 2 attributes

android:focusable="false"
 android:focusableInTouchMode="true"

inside the parent Linear layout.

for example:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="true"
            android:orientation="vertical">


     <EditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="email id"
         android:inputType="textEmailAddress"
         android:maxLines="1"
    />

</LinearLayout>

If you want to hide the keyboard on activity creation use these attributes inside manifest file activity tag for example:

 <activity
     android:configChanges="screenSize|orientation|keyboardHidden"
     android:screenOrientation="portrait"
     android:name=".activities.LoginActivity"
     android:windowSoftInputMode="stateHidden|adjustResize"/>

If you want to hide the keyboard on button click or on some event occur use the following code

 public void onClick(View v) {
                try {
                    //InputMethodManager is used to hide the virtual keyboard from the user after finishing the user input
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    if (imm.isAcceptingText()) {
                        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }
                    }
                } catch (NullPointerException e) {
                    Log.e("Exception", e.getMessage() + ">>");
                }

If you want to take off the focus from edit text fields after leaving the activity

@Override
    protected void onResume() {
        super.onResume();
        mEmail.clearFocus();
        mPassword.clearFocus();
}

And finally If you want to clear the data in the edit text fields on submitting the form use

 @Override
    protected void onResume() {
        super.onResume();
        mEmail.getText().clear();
        mPassword.getText().clear();
    }
<LinearLayout 
    android:focusable="true"
    android:focusableInTouchMode="true" 
    android:layout_width="0px"
    android:layout_height="0px" />

 <EditText android:text="" 
    android:id="@+id/EditText01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:hint="@string/hint">
 </EditText>

No other coding needed, it's a simple and clear solution.

Manish Singh

You can use window soft input mode hidden for hide keyboard and android:focusable="false" and android:focusableInTouchMode="true"

<activity
    android:name=".MainActivity"
    android:windowSoftInputMode="stateHidden"
    android:label="@string/app_name"
    >

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<EditText
        android:id="@+id/input"
        android:layout_width="0dp"
        android:layout_height="48dp"
        android:focusable="false"
        android:focusableInTouchMode="false" />

detailInputView = (EditText) debugToolsView.findViewById(R.id.input);
    detailInputView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            detailInputView.setFocusable(true);
            detailInputView.setFocusableInTouchMode(true);
            return false;
        }
    });

It worked for me, wish also will help you.

Either :

android:windowSoftInputMode="stateAlwaysHidden"

add this property to your Manifest.xml file under that specific activity where you want to disable auto focus. Cons: It will only hide your soft keyboard, will cursor will be still there.

Else :

 android:focusableInTouchMode="true"

add this property to your UI xml file (under parent layout), so that it will hide focus also the keyboard both.

Just add the following to your main layout view xml tag:

 android:focusableInTouchMode="true"

Hei Lee,

There are several way to do this, Mudassir has give a way to you to do that.

If the idea doesn't work, then do just simple thing-

In your AndroidManifest>Activity add this simple code:

android:windowSoftInputMode="stateHidden"

Nothing need to do in EditText in XML, all will be work and no focus will appear.

Look the real life example code:

<activity
        android:name=".MainActivity"
        android:windowSoftInputMode="stateHidden"
        android:label="@string/app_name"
        >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

try this code in LinearLayout

 <LinearLayout
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText

            android:hint="Search..."
            android:drawableRight="@drawable/ic_search"
            android:id="@+id/search_tab_hotbird_F"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyHotbird_F"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="4dp">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>

for clear default requestFocuse you should set your View's parent focusable="true" like this below

<android.support.constraint.ConstraintLayout
                android:id="@+id/coordinatorChild"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:focusable="true"
                android:focusableInTouchMode="true">
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!