我的一个应用程序有一个“开机画面”(基本上是一个菜单),其中包括一个EditText
和几个Button
。问题是,我有几个用户报告说当他们打开应用程序时,屏幕上的键盘会自动弹出,而他们甚至没有触摸到EditText
。据我所知,所有这些用户都在使用HTC Hero。
这是 1.5 版本中的一个 bug 吗?我能做什么来解决它吗?
我的一个应用程序有一个“开机画面”(基本上是一个菜单),其中包括一个EditText
和几个Button
。问题是,我有几个用户报告说当他们打开应用程序时,屏幕上的键盘会自动弹出,而他们甚至没有触摸到EditText
。据我所知,所有这些用户都在使用HTC Hero。
这是 1.5 版本中的一个 bug 吗?我能做什么来解决它吗?
您可以在活动的onCreate方法中使用以下代码行,以确保键盘仅在用户单击EditText时弹出
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden"
>
这适用于Android 3.0、3.1、3.2、4.0 - 编辑器使用的是Eclipse 3.7。
在每个您希望软键盘保持隐藏的活动中,在应用程序清单XML文件中放置 'windowSoftInputMode="stateHidden"'。这意味着键盘不会自动弹出,用户必须“点击”文本字段才能弹出它。我搜索了将近一个小时寻找可行的方法,所以我想分享一下。
android:windowSoftInputMode="stateHidden|adjustResize"
它完美地工作。:)
requestFocus()
时它不会弹出。 - Takeshi Tokugawa YD这段代码适用于所有 Android 版本:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//Automatic popping up keyboard on start Activity
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
or
//avoid automatically appear android keyboard when activity start
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
android:focusable="true"
android:focusableInTouchMode="true"
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
android:windowSoftInputMode="stateVisible"
<activity
android:name="com.sams.MainActivity"
android:windowSoftInputMode="stateVisible" >
</activity>
这可能对你有所帮助。
import android.view.WindowManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
你可以像这样进行编程:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);