2012-03-16 79 views
174

我有一個EditText小部件的活動。每次此活動顯示時,我的EditText都會關注並顯示Android鍵盤。我不想要這個。我不想自動安卓鍵盤顯示。我該怎麼辦?如何避免當活動開始時自動出現Android鍵盤

+65

<活動的android:windowSoftInputMode = 「stateHidden」 ...>的' – idiottiger 2012-03-16 06:19:06

+1

可能重複[ Android的屏幕上的鍵盤自動彈出](http://stackoverflow.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

回答

282

我認爲有以下可能工作

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

121

試試這個還 -

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

27

隱藏它使用的主題

<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

9

試圖聲明它menifest文件

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

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

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

隱藏鍵盤的功能。

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"> 
18

這兩個屬性添加到您的父母佈局(例如:線性佈局,相對佈局)

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

它會做的伎倆:)

8

只需添加在AndroidManifest.xml

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

發生這種情況時,您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

4

對我來說最好的解決方案,粘貼類的清單`

@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(); 
} 
相關問題