mike yaworski mike yaworski - 5 months ago 11
Android Question

How to make EditText not focused when creating Activity

Before you downvote and mark as duplicate, read my question.

I've read the other questions discussing this, and all of them work for my layouts, except for the very first one created.

At the moment, this is at the top of my

onCreate
method:

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


^ That makes it so at least the keyboard doesn't pop up on startup, but the
EditText
is still focused on.

This is the
XML
for my
EditText
:

<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/changePass"
android:layout_centerHorizontal="true"
android:layout_marginTop="167dp"
android:ems="10"
android:imeOptions="flagNoExtractUi"
android:inputType="textPassword"
android:maxLength="30" >
</EditText>


This is what it looks like when I bring up my activity:

enter image description here

The problem is that with some phones, when an
EditText
is focused like this, they can't write in it. I want it to not focus.

What I've done works for the next layouts brought up in that it the
EditTexts
are not focused on and would look more like this:

enter image description here

Notice that it's the same layout, though. This is the screen after the user has been brought back to this screen, which would indicate nothing wrong with the
XML
because this is the same
XML
, but the problem is that the
EditText
is only focused on when the activity is created.

I've done research and all of the other questions don't help me with this (they did however help the keyboard not show up, thankfully). How can I make it so the
EditText
on startup will look like the second screenshot, rather than the first?

Answer

You can set property of Layout like android:descendantFocusability="beforeDescendants" and android:focusableInTouchMode="true"

Example:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/mainLayout"
  android:descendantFocusability="beforeDescendants"
  android:focusableInTouchMode="true" >

<EditText
    android:id="@+id/password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/changePass"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="167dp"
    android:ems="10"
    android:imeOptions="flagNoExtractUi"
    android:inputType="textPassword"
    android:maxLength="30" >
</EditText>

</RelativeLayout>

May this one helpful ;)

Comments