Android屏幕上的键盘自动popup
我的一个应用程序有一个“开放屏幕”(基本上是一个菜单),有一个EditText
后面跟着几个EditText
。 问题是,我的几个用户报告说,当他们打开应用程序时,它会自动popup屏幕上的键盘,甚至没有他们触摸EditText
。 据我所知,所有这些用户都使用HTC Hero 。
这是1.5的错误吗? 有什么我可以做的吗?
您可以在活动的onCreate方法中使用以下代码行,以确保用户单击EditText时只popup键盘
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文件中,以便您希望软件键盘保持隐藏状态的每个活动。这意味着键盘不会自动popup,用户必须“点击”文本字段来提起来。 我花了将近一个小时的时间寻找一些有用的东西,所以我想分享一下。
在你的AndroidManifest.xml中添加这个:
android:windowSoftInputMode="stateHidden|adjustResize"
它完美的作品。 🙂
这段代码可以在所有的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); }
你可以在activity的onCreate()方法中使用这个
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或者将这些代码粘贴到AndroidManifest.xml的Activity标签中
android:windowSoftInputMode="stateVisible"
在该版本的Android中,当视图被夸大时,默认情况下,焦点将被设置为第一个可调焦控件 – 如果没有物理键盘,则会popup屏幕上的键盘。
为了解决这个问题,在其他地方明确地设置焦点。 如果将焦点设置为除EditText之外的其他任何项目,屏幕键盘将不会显示。
你有没有尝试在模拟器中运行Android 1.5testing?
您可以在Android Mainfest.xml的 activity标签下添加一行代码
<activity android:name="com.sams.MainActivity" android:windowSoftInputMode="stateVisible" > </activity>
这可能会帮助你。
你可以像编程那样做
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
或在AndroidManifest.xml
中的<activity tag
设置android:windowSoftInputMode="stateHidden"
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService); imm.ShowSoftInput(_enterPin.FindFocus(), 0);
*这是用于Android.xamarin和FindFocus() – 它search当前拥有焦点的视图的层次结构中的视图,因为在上述代码之前有_enterPin.RequestFocus(),因此它显示_enterPin的键盘EditText *
这对我工作:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);