Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OnScreen keyboard opens automatically when Activity starts

When my Activity with a ScrollView layout and EditTexts starts, the EditTexts get focus and the Android OnScreen keyboard opens.

How I can avoid that?

When I was using LinearLayout and RelativeLayout without the ScrollView it doesn't happen.

I've tried it this way, and it works, but it's not a good way to do it:

TextView TextFocus = (TextView) findViewById(R.id.MovileLabel); TextFocus.setFocusableInTouchMode(true); TextFocus.requestFocus(); 

Next you have an example of some of my layouts with this problem, when this Activity starts, focus goes to the first EditText, Description and the Android keyboard opens automatically, this is very annoying.

<?xml version="1.0" encoding="utf-8"?> <ScrollView android:id="@+id/ScrollView01"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     xmlns:android="http://schemas.android.com/apk/res/android">      <LinearLayout          android:orientation="vertical"         android:layout_width="fill_parent"         android:layout_height="fill_parent"          android:padding="10px">          <RelativeLayout             android:gravity="center_vertical"             android:layout_width="fill_parent"             android:layout_height="wrap_content">             <TextView                 android:id="@+id/UserLabel"                  android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:layout_marginTop="13px"                 android:text="@string/userlabel"/>             <TextView                 android:id="@+id/User"                 android:layout_alignBaseline="@id/UserLabel"                 android:layout_alignParentRight="true"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="test"/>         </RelativeLayout>          <View             android:layout_gravity="center_horizontal"             android:layout_width="fill_parent"             android:layout_height="1dip"             android:background="#808080"             android:layout_marginTop="5px"             android:layout_marginBottom="12px"/>          <RelativeLayout             android:gravity="center_vertical"             android:layout_width="fill_parent"             android:layout_height="wrap_content">             <TextView             android:id="@+id/DescriptionLabel"              android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="@string/desclabel"             android:layout_marginTop="13px"/>             <EditText              android:id="@+id/Description"             android:layout_alignBaseline="@id/DescriptionLabel"             android:layout_alignParentRight="true"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:width="180px"/>         </RelativeLayout>          <RelativeLayout             android:gravity="center_vertical"             android:layout_width="fill_parent"             android:layout_height="wrap_content">             <TextView                 android:id="@+id/EmailLabel"                  android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/emaillabel"                 android:layout_marginTop="13px"/>             <EditText                  android:id="@+id/Email"                 android:layout_alignBaseline="@+id/EmailLabel"                 android:layout_alignParentRight="true"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:width="180px"/>         </RelativeLayout>          <RelativeLayout             android:gravity="center_vertical"             android:layout_width="fill_parent"             android:layout_height="wrap_content">             <TextView                 android:id="@+id/MovilePhoneLabel"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/movilephonelabel"                 android:layout_marginTop="13px"/>             <EditText                  android:id="@+id/MovilePhone"                 android:layout_alignBaseline="@+id/MovilePhoneLabel"                 android:layout_alignParentRight="true"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:width="180px"/>         </RelativeLayout>          <View             android:layout_gravity="center_horizontal"             android:layout_width="fill_parent"             android:layout_height="1dip"             android:background="#808080"             android:layout_marginTop="5px"             android:layout_marginBottom="10px"/>           <RelativeLayout             android:gravity="center_vertical"             android:layout_width="fill_parent"             android:layout_height="wrap_content">             <Button                 android:id="@+id/applybutton"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/apply"                 android:width="100px"                 android:layout_marginLeft="40dip"/>             <Button                 android:id="@+id/cancelbutton"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:text="@string/cancel"                 android:width="100px"                 android:layout_alignBaseline="@+id/applybutton"                 android:layout_alignParentRight="true"                 android:layout_marginRight="40dip"/>         </RelativeLayout>     </LinearLayout> </ScrollView> 
like image 471
NullPointerException Avatar asked Nov 10 '10 21:11

NullPointerException


2 Answers

Android opens the OnScreenKeyboard automatically if you have an EditText focussed when the Activity starts.

You can prevent that by adding following into your Activity's onCreate method.

 getWindow().setSoftInputMode(     WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
like image 125
Juhani Avatar answered Sep 19 '22 06:09

Juhani


If you want to do it editing the AndroidManifest:

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

the line android:windowSoftInputMode="stateHidden" is the one that prevents the keyboard focus.

like image 21
Pere BG Avatar answered Sep 21 '22 06:09

Pere BG