【发布时间】:2010-05-23 16:58:58
【问题描述】:
我有一个屏幕,第一个字段是EditText,它在启动时获得焦点,还弹出数字输入类型,这很烦人
如何确保在启动 Activity 时没有获得焦点,和/或没有抬起输入面板?
【问题讨论】:
标签: android keyboard popup android-softkeyboard
我有一个屏幕,第一个字段是EditText,它在启动时获得焦点,还弹出数字输入类型,这很烦人
如何确保在启动 Activity 时没有获得焦点,和/或没有抬起输入面板?
【问题讨论】:
标签: android keyboard popup android-softkeyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
或
在应用标签中如下设置清单文件中的活动属性
android:windowSoftInputMode="stateHidden"
【讨论】:
Formats: flag Values: adjustNothing, adjustPan, adjustResize, adjustUnspecified, stateAlwaysHidden, stateAlwaysVisible, stateHidden, stateUnchanged, stateUnspecified, stateVisible Specify the default soft-input mode for the main window of this activity. A value besides "unspecified" here overrides any value in the theme.
转到您的应用程序清单文件,并为您要禁用自动键盘弹出的活动编写此行。
android:windowSoftInputMode="stateHidden"
【讨论】:
以编程方式不显示键盘,但默认小部件仍接收焦点调用:
getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
在onResume()
【讨论】:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
在onCreate()中调用上述方法。它会阻止softKeyboard显示,除非用户通过
tapping or clicking.选择EditText
或者干脆在Manifest.xml的Activity标签中添加android:windowSoftInputMode="stateHidden"
【讨论】:
这通常是一团糟。我尝试的第一件事是尝试通过 .您还必须具有可聚焦和可聚焦的InTouchMode。
<TextView
...
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus/>
</TextView>
【讨论】:
让另一个视图获取焦点。默认情况下,当布局膨胀时,第一个可聚焦的 View 将获得焦点。您可以通过 XML 请求关注不同的视图:
<TextView
android:layout_width="wrap_parent"
android:layout_height="wrap_content"
android:text="Some other view">
<requestFocus />
</TextView>
这适用于任何视图。
如果您想以编程方式进行,可以使用view.requestFocus()。
【讨论】:
将android:windowSoftInputMode="stateHidden" 添加到清单中的 Activity 只会在您启动 Activity 时隐藏键盘,或者如 Google 所说的那样
当用户肯定地向前导航到活动时,而不是 而不是因为离开另一个活动而回到它
若要在用户按下后退按钮并从其他活动返回您的活动时也隐藏键盘,请使用android:windowSoftInputMode="stateAlwaysHidden"
【讨论】:
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
【讨论】:
edit 链接并进行更改。请尝试通过选择您的代码并使用代码示例按钮{} 或按Ctrl+K 来格式化您的代码。
没有尝试过,我也没有靠近我的编程计算机,但我怀疑以编程方式将焦点发送到父视图或类似性质的东西可以解决问题 - 这更有可能是一种解决方法而不是解决方案,但再次无法测试一下只是一个想法
【讨论】:
.requestFocus();,但仍然弹出键盘。