Android: EditText turns on keyboard automatically, how to stop?

25,781

Solution 1

I found this to be the solution:

Window.SetSoftInputMode (SoftInput.StateAlwaysHidden);

Note: This is in C# not Java for Android

Solution 2

First the tag is monodroid so it's on C# so the accepted answer is correct.

But is not what I think the author wants... this trick just hide the keyboard but the editText still have the focus.

To do this both in java and c#, you have to put this in your root Layout :

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

For example :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
              >
....
</LinearLayout>

Solution 3

Add this in onCreate

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Solution 4

try this in layout

<EditText
                    android:id="@+id/myid2"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/myid1"
                    android:clickable="true"
                    android:cursorVisible="false"
                    android:focusable="false"
                    android:hint="@string/hint"
                    android:singleLine="true"
                    android:textColor="@color/black"
                    android:textSize="15dp" />

and this in your code

    myEditText.setOnTouchListener(new OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {

            if (event.getAction() == MotionEvent.ACTION_UP) {
                //do tasks
            }
            return false;
        }
    });

i dont know if it is of any use. i dont even know what it does. but it solved a similar problem for me. sry if i wasted your time

Solution 5

i found my solution , you can try this one and it works perfect.

xml (i set editText focusableInTouchMode to false in defualt):

       <EditText ... android:focusableInTouchMode="false" .../>

and i changed focusableInTouchMode after touching in java :

        yourEditText.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            yourEditText.setFocusableInTouchMode(true);
            return false;
        }
    });
Share:
25,781

Related videos on Youtube

Ian Vink
Author by

Ian Vink

https://mvp.microsoft.com/en-us/PublicProfile/5002789?fullName=Ian%20Vink

Updated on July 09, 2022

Comments

  • Ian Vink
    Ian Vink almost 2 years

    I have a simple EditText over a ListView defined below.

    When the app runs, the EditText is selected and the keyboard appears.

    I don't want that to happen. I don't want it selected or the keyboard to appear by default.

    <EditText
        android:id="@+id/search_box"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="type to search titles"
        android:inputType="text"
        android:maxLines="1"
        android:capitalize="none"
        android:linksClickable="false"
        android:autoLink="none"
        android:autoText="true"
        android:singleLine="true" />
    <ListView
        android:id="@+id/DetailsListView"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:background="@color/transparent"
        android:cacheColorHint="@color/transparent"
        android:listSelector="@drawable/list_selector"
        android:fastScrollEnabled="true" />
    
  • WallMobile
    WallMobile about 11 years
    why is this the accepted answer. The question is for Android development in Java not C#.
  • Ian Vink
    Ian Vink about 11 years
    You can write Android native apps in C#. In fact you can write iOS in C# too and share 80% of the code between the two plateforms. 100% native code. (Xamarin.com)
  • Arun Jose
    Arun Jose over 10 years
    add the both properties to the edit text layout! Adding it to rootlayout didn't help me!
  • Adil Hussain
    Adil Hussain about 9 years
    You can also specify this in the manifest for the Activity as follows: android:windowSoftInputMode="stateHidden".
  • Adil Hussain
    Adil Hussain about 9 years
    Regarding the answer above, you can also specify this in the manifest for the Activity as follows: android:windowSoftInputMode="stateAlwaysHidden".
  • Ridha Rezzag
    Ridha Rezzag about 6 years
    this must be the correct answer bough solutions works