我有一个屏幕,其中第一个字段是EditText,它在启动时获得焦点,也弹出数字输入类型,这非常烦人
如何确保在活动开始时无法获得焦点,和/或未提升输入面板?
答案 0 :(得分:143)
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
或
在应用程序标记
中设置清单文件中的活动属性,如下所示android:windowSoftInputMode="stateHidden"
答案 1 :(得分:141)
转到您的应用程序清单文件,并为要禁用自动键盘弹出窗口的该活动编写此行。
android:windowSoftInputMode="stateHidden"
答案 2 :(得分:18)
要以编程方式不显示键盘,但默认小部件仍会收到焦点调用:
getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
onResume()
中的
答案 3 :(得分:10)
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
在 onCreate()中调用上述方法。除非用户选择
tapping or clicking.
>> EditText ,否则会阻止显示 softKeyboard p>
或只是在android:windowSoftInputMode="stateHidden"
Manifest.xml
答案 4 :(得分:5)
这通常是一团糟。我尝试的第一件事是尝试通过另一个视图窃取焦点。您还必须具有focusable和focusableInTouchMode。
<TextView
...
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus/>
</TextView>
答案 5 :(得分:4)
让另一个视图抓住焦点。默认情况下,第一个可聚焦视图将在布局膨胀时获得焦点。您可以通过XML请求关注不同的视图:
<TextView
android:layout_width="wrap_parent"
android:layout_height="wrap_content"
android:text="Some other view">
<requestFocus />
</TextView>
这适用于任何视图。
如果您想以编程方式执行此操作,可以使用view.requestFocus()
。
答案 6 :(得分:0)
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
答案 7 :(得分:0)
在清单中的活动中添加android:windowSoftInputMode="stateHidden"
仅在启动活动时或Google所说的那样隐藏键盘。
当用户肯定地导航到活动时, 而不是因为留下其他活动而退回去
要在用户按下后退按钮并从其他活动移回到您的活动时也隐藏键盘,请使用android:windowSoftInputMode="stateAlwaysHidden"
答案 8 :(得分:-1)
没有试过这个,也没有我靠近我的编程计算机,但我怀疑是以编程方式将焦点发送到父视图或者那种性质的东西可以做到这一点 - 这更可能是解决方法而不是解决方案,但再次无法测试它只是一个想法