我的一个应用程序有一个“开放屏幕”(基本上是一个菜单),有一个EditText
,后面跟着几个Button
s。问题是,我的一些用户报告说,当他们打开应用程序时,它会自动弹出屏幕键盘而不会触及EditText
。据我所知,所有这些用户都在使用HTC Hero。
这是1.5中的错误吗?我能做些什么吗?
您可以在activity的onCreate方法中使用以下代码行,以确保仅当用户单击EditText时弹出键盘
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(_enterPin.FindFocus(), 0);
*这适用于Android.xamarin和FindFocus() - 它搜索以此视图为中心的层次结构中当前具有焦点的视图,因为我在上面的代码之前有_enterPin.RequestFocus(),因此它显示了_enterPin EditText的键盘*
包括进口位于顶部的位置:
import android.view.WindowManager;
在OnCreate部分添加此代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_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文件中,用于您希望软件键盘保持隐藏的EACH活动。这意味着键盘不会自动启动,用户必须“点击”文本字段来提升它。我搜索了近一个小时的工作,所以我想我会分享。
此代码适用于所有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);
}
在AndroidManifest.xml中添加:
android:windowSoftInputMode="stateHidden|adjustResize"
它完美地运作。 :)
您可以在活动的onCreate()方法中使用此方法
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或者将此代码粘贴到AndroidManifest.xml中的Activity标记中
android:windowSoftInputMode="stateVisible"
您可以在活动标记下的Android Manifest.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
在XML的父布局中添加它。
android:focusable="true"
android:focusableInTouchMode="true"
它确保在Activity启动时焦点不在editText上。