活动开始时,屏幕键盘会自动打开

当我的ScrollView布局和EditText活动开始时, EditText获得焦点,Android OnScreen键盘打开。

我怎样才能避免呢?

当我使用LinearLayoutRelativeLayout没有ScrollView它不会发生。

我已经尝试过这种方式,它可以工作,但这不是一个好办法:

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

接下来,您将看到一些关于此问题的布局示例,当此活动启动时,焦点将转到第一个EditTextDescription并且Android键盘会自动打开,这非常烦人。

 <?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> 

Solutions Collecting From Web of "活动开始时,屏幕键盘会自动打开"

如果您在活动启动时有一个EditText焦点,Android会自动打开OnScreenKeyboard。

你可以通过在你的Activity的onCreate方法中添加以下内容来防止这种情况。

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

如果你想要编辑AndroidManifest:

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

android:windowSoftInputMode="stateHidden"是防止键盘焦点。

另一种方法是在LinearLayout上添加:

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

让我指出这一点

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

仍然做同样的事情,但光标仍然在那里。

你也可以用下面的语句,

(EditTextName).setInputType(0)

它会永久隐藏perticular Edittext的默认键盘,即使在EditText Touch或Click上。