Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中防止活动启动时打开软键盘?_Android - Fatal编程技术网

如何在Android中防止活动启动时打开软键盘?

如何在Android中防止活动启动时打开软键盘?,android,Android,在Android应用程序中,每当活动启动时,文本框就会获得焦点,软键盘就会自动弹出。我曾试图通过在onCreate方法中使用以下行来停止此操作,但它不起作用 ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(EditText.getWindowToken(), 0); 下面的方法有效吗 // Find editor EditText editWindowIn

在Android应用程序中,每当活动启动时,文本框就会获得焦点,软键盘就会自动弹出。我曾试图通过在onCreate方法中使用以下行来停止此操作,但它不起作用

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(EditText.getWindowToken(), 0);

下面的方法有效吗

// Find editor
EditText editWindowInstance = this.findViewById(R.id.MyEditWindow);

// close soft keyboard 
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(editWindowInstance.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

您可以使用以下代码行来确保键盘仅在用户单击编辑文本时弹出

Java

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
Kotlin

window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)

您需要添加

android:WindowsOfInputMode=“调整大小”


到AndroidManifest.xml文件中的活动标记。

以下代码适用于我

((InputMethodManager) iClockActivity
                    .getSystemService(Context.INPUT_METHOD_SERVICE))
                    .showSoftInput(textView, 0);

我知道这很古老,但也许它会在将来帮助别人

我没见过有人建议“国家隐藏”

您的清单文件如下所示:

<activity
    ...
    android:windowSoftInputMode="stateHidden|adjustResize"
    ...
>

这将非常有效,试试这个

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
并将以下内容添加到您的清单中

android:windowSoftInputMode="stateHidden|adjustResize"

干杯,享受编码

您可以将此代码放入活动中。onCreate: this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\状态\始终\隐藏)

但我发现,最可靠、最简洁的方法是在ActivityXML布局中将焦点设置到不同的视图上

<Button
  android:id="@+id/mybutton">
  <requestFocus />
</Button>

没有一个解决方案适合我。最后,一个非常简单的解决方案发挥了神奇的作用。 在父布局中添加这两行

android:focusable="true" 
android:focusableInTouchMode="true"

这是可行的,但当我点击文本框进行输入时,键盘会在文本框上方弹出,我看不到我正在输入什么。文本框位于屏幕底部。您需要将android:WindowsOfInputMode=“adjustResize”添加到AndroidManifest.xml文件中的标记中。android:WindowsOfInputMode=“adjustResize”在AndroidManifest.xml中设置,但仍然存在相同的问题。在同一屏幕上也有一个按钮。我试图通过使用:btn.setFocusable(true)将焦点移动到按钮上;btn.requestFocus();但焦点仍然是TextView。我不知道我做错了什么。奇怪,你能发布你的代码吗?清单中的活动标记和UI活动中的代码?我将发布这些代码作为此问题的答案,因为代码格式在注释中不可用。使用“hideSoftInputFromWindow(editWindowInstance…)”而不是“editWindowInstance.getWindowToken()”如何?这更简单直接。可能重复