防止键盘在活动开始时显示

Fco*_*der 253 java android focus android-keypad

我有一个Edit Text输入活动.初始化活动时,将显示Android键盘.在用户聚焦输入之前,键盘如何保持隐藏状态?

Luc*_*cas 422

我认为以下可能有效

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

我以前用过这种东西.


Pra*_*mar 176

试试这个 -

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

否则,在清单文件的活动中声明 -

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
          android:label="@string/app_name"
          android:windowSoftInputMode="stateHidden"
          >
Run Code Online (Sandbox Code Playgroud)

如果您已经使用android:windowSoftInputMode了类似adjustResize或的值adjustPan,则可以组合两个值,例如:

<activity
        ...
        android:windowSoftInputMode="stateHidden|adjustPan"
        ...
        >
Run Code Online (Sandbox Code Playgroud)

这将在适当时隐藏键盘,但在必须显示键盘时平移活动视图.

  • 感谢您在代码和xml中显示!的确,这是最正确的答案!特别是因为这可能是你花了3分钟写两种方法让你不首先;-) (3认同)

dir*_*ira 34

使用主题隐藏所有活动

<style name="MyTheme" parent="Theme">
    <item name="android:windowSoftInputMode">stateHidden</item>
</style>
Run Code Online (Sandbox Code Playgroud)

设定主题

<application android:theme="@style/MyTheme">
Run Code Online (Sandbox Code Playgroud)


Kin*_*ses 22

将这两个属性添加到父布局(例如:线性布局,相对布局)

android:focusable="false"
android:focusableInTouchMode="false" 
Run Code Online (Sandbox Code Playgroud)

它会做的伎俩:)

  • 这对我不起作用,但是根据 Jack T 的回答,将它们设置为“true”是可行的。在最近的版本中是否有行为改变? (2认同)

小智 13

尝试在menifest文件中声明它

<activity android:name=".HomeActivity"
      android:label="@string/app_name"
      android:windowSoftInputMode="stateAlwaysHidden"
      >
Run Code Online (Sandbox Code Playgroud)


Sar*_*aVF 9

如果您使用的是API级别21,则可以使用editText.setShowSoftInputOnFocus(false);


Day*_*are 9

只需在AndroidManifest.xml中添加

<activity android:name=".HomeActivity"  android:windowSoftInputMode="stateHidden">
</activity>
Run Code Online (Sandbox Code Playgroud)


Jac*_*k T 7

您还可以在.xml布局文件的父布局中编写这些代码行,其中包含"问题":以下是代码:

android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)

例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    ...
    android:focusable="true"
    android:focusableInTouchMode="true" >

    <EditText
        android:id="@+id/myEditText"
        ...
        android:hint="@string/write_here" />

    <Button
        android:id="@+id/button_ok"
        ...
        android:text="@string/ok" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

关键是要确保EditText不能直接聚焦.
再见!;-)


Efe*_*YER 6

最适合我的解决方案,粘贴你的课程

@Override
public void onResume() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onResume();
}

@Override
public void onStart() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onStart();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

只需将其添加到manifest.xml文件中

<activity android:name=".MainActivity"
            android:windowSoftInputMode="stateHidden">
Run Code Online (Sandbox Code Playgroud)

大功告成