我的一个应用程序具有一个“正在打开的屏幕”(基本上是一个菜单),EditText
其后跟着几个Button
s。问题是我的一些用户报告说,当他们打开应用程序时,它会自动弹出屏幕键盘,而他们甚至没有触摸EditText
。据我所知,所有这些用户都在使用HTC Hero。
这是1.5版的错误吗?有什么我可以做的吗?
我的一个应用程序具有一个“正在打开的屏幕”(基本上是一个菜单),EditText
其后跟着几个Button
s。问题是我的一些用户报告说,当他们打开应用程序时,它会自动弹出屏幕键盘,而他们甚至没有触摸EditText
。据我所知,所有这些用户都在使用HTC Hero。
这是1.5版的错误吗?有什么我可以做的吗?
Answers:
您可以在活动的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)
将“ windowSoftInputMode =“ stateHidden””放置在应用程序的清单XML文件中,以实现您希望软键盘保持隐藏状态的每个活动。文本字段来显示它。我搜索了将近一个小时的有效内容,因此我想分享一下。
此代码将在所有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);
}
您可以在活动的onCreate()方法中使用此方法
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或将此代码粘贴到AndroidManifest.xml的“活动”标签中
android:windowSoftInputMode="stateVisible"
您可以在活动标记下的Android Mainfest.xml中添加单行代码
<activity
android:name="com.sams.MainActivity"
android:windowSoftInputMode="stateVisible" >
</activity>
这可能对您有帮助。
在该版本的Android中,当视图放大时,默认情况下会将焦点设置为第一个可聚焦控件-如果没有物理键盘,则会弹出屏幕键盘。
要解决此问题,请在其他地方显式设置焦点。如果将焦点设置为EditText以外的任何其他值,则不会出现屏幕键盘。
您是否尝试通过在模拟器中运行Android 1.5进行测试?
您可以通过编程方式完成
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
或android:windowSoftInputMode="stateHidden"
放在<activity tag
里面AndroidManifest.xml