如何避免当活动开始时自动出现Android键盘

问题描述:

我有一个EditText小部件的活动。每次此活动显示时,我的EditText都会关注并显示Android键盘。我不想要这个。我不想自动安卓键盘显示。我该怎么办?如何避免当活动开始时自动出现Android键盘

+65

的' – idiottiger 2012-03-16 06:19:06

+1

可能重复[ Android的屏幕上的键盘自动弹出](http://*.com/questions/2496901/android-on-screen-keyboard-auto-popping-up) – Caleb 2012-03-17 18:35:57

+0

如何与'android:windowSoftInputMode =“adjustPan”一起使用“ '? – 2016-10-29 21:19:58

我认为有以下可能工作

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

我曾经使用过它这样的事情。

+0

感谢兄弟,这工作完美: )谢谢 – Fcoder 2012-03-16 06:19:01

+1

不要忘记接受:) – Lucas 2012-03-16 06:21:54

+0

有没有办法将它设置为数字键盘?即12键键盘? – 2015-02-27 15:46:50

试试这个还 -

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

否则,声明在manifest文件的活动 -

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".Main" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateHidden" 
      > 

如果您已经使用android:windowSoftInputModeadjustResizeadjustPan一个值,你可以结合两个值如:

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

这会在适当的时候隐藏键盘,但在需要显示键盘的情况下平移活动视图。

+8

这应该是正确答案 – martyglaubitz 2014-04-25 16:07:07

+1

感谢您在代码和xml中显示!事实上,这是最正确的答案!特别是因为它可能是你花3分钟写两种方法,使你不是第一次;-) – eric 2017-04-21 01:13:20

隐藏它使用的主题

<style name="MyTheme" parent="Theme"> 
    <item name="android:windowSoftInputMode">stateHidden</item> 
</style> 

设置主题

<application android:theme="@style/MyTheme"> 
+0

好!我没有像这种全球化方法那样在 – 2014-02-26 21:08:18

+0

之前考虑过这种方法。 – Rm558 2015-12-21 13:42:24

+0

这是因为我在不同的地方使用不同的主题 – nmxprime 2016-03-10 12:21:03

试图声明它menifest文件

<activity android:name=".HomeActivity" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateAlwaysHidden" 
     > 

如果您正在使用API​​的所有活动21级,你可以使用editText.setShowSoftInputOnFocus(false);

//to hide the soft keyboard 
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 

隐藏键盘的功能。

public static void hideKeyboard(Activity activity) { 
    View view = activity.getCurrentFocus(); 

    if (view != null) { 
     InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); 

     inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
} 

隐藏键盘AndroidManifext.xml文件。

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:windowSoftInputMode="stateHidden"> 

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

android:focusable="false" 
android:focusableInTouchMode="false" 

它会做的伎俩:)

只需添加在AndroidManifest.xml

<activity android:name=".HomeActivity" android:windowSoftInputMode="stateHidden"> 
</activity> 

发生这种情况时,您EditText是第一次获得焦点时,当你的活动开始。因此,只需将初始焦点设置为其他视图,即可无需代码即可可靠地解决此问题。你可以用XML做到这一点,不需要代码。

例子:

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

这里不工作 – HelloWorld 2017-01-22 16:47:10

+0

只是检查:你试图为某个对象设置,它有能力获得焦点,而不是你的编辑文本?我只是检查你没有使用而是使用,例如,?你正在测试哪个版本的Android?这对我来说棒棒糖和奇巧。 – 2017-01-22 20:44:54

+0

@HelloWorld您能否确认,您是否使用过 2017-03-06 19:06:33

对我来说最好的解决方案,粘贴类的清单`

@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(); 
}