2012-03-16 1 views
174

У меня есть активность с виджнем EditText. Каждый раз, когда это действие показывает, My EditText получают фокус и клавиатуру Android. Я не хочу этого. Я не хочу, чтобы Android-клавиатура показывалась автоматически. Как я могу сделать?Как избежать автоматического появления андроид-клавиатуры при запуске активности

+65

в вашем манифесте '<деятельности андроида: windowSoftInputMode = "stateHidden" ...>' – idiottiger

+1

возможно дубликат [ Android на экранной клавиатуре автоматически всплывает] (http://stackoverflow.com/questions/2496901/android-on-screen-keyboard-auto-popping-up) – Caleb

+0

Как использовать вместе с 'android: windowSoftInputMode =" adjustPan " '? –

ответ

282

Я думаю, что следующий может работать

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

Я использовал его для такого рода вещи раньше.

+0

спасибо, это работает Отлично:) спасибо – Fcoder

+1

Не забудьте принять :) – Lucas

+0

Есть ли способ установить его как цифровую клавиатуру? т.е. клавиатура 12Key? –

121

Попробуйте также -

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

В противном случае, объявите в деятельности манифеста файла -

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

Если вы уже используете android:windowSoftInputMode для значения, как adjustResize или adjustPan, вы можете объединить два такие как:

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

Это будет скрывать клавиатуру, когда это необходимо, но панорамируйте вид активности в случае, если клавиатура должна отображаться.

+8

, это должен быть правильный ответ – martyglaubitz

+1

спасибо за показ как в коде, так и в xml! Действительно, это самый правильный ответ! Тем более, что, вероятно, было 3 минуты, когда вы писали оба метода, которые сделали вас не первым ;-) – eric

27

Скрыть его для всех видов деятельности с использованием темы

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

установить тему

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

приятно! Я не рассматривал этот подход до –

+0

, как этот глобальный подход. – Rm558

+0

Это работало так, как я использовал разные темы в разных местах. – nmxprime

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

Добавьте эти два свойства вашего родительского макета (например: Linear Layout, Relative Layout)

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

Это будет делать трюк :)

8

Просто Добавить в AndroidManifest.xml

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

Это происходит, когда вы редактируете текст первый взгляд, чтобы получить Фокус, когда начинается ваша деятельность. Таким образом, вы можете надежно решить эту проблему без кода, просто установив исходный фокус на другой вид. Вы можете сделать это в XML, никакого кода не требуется.

Пример:

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

Не работает здесь – HelloWorld

+0

Просто проверка: вы пытались установить для некоторого объекта, который имеет возможность получать фокус, а не ваш текст редактирования? Я просто проверяю, что вы не использовали , но вместо этого использовали, например, ? Какую версию Android вы тестируете? Для меня это работало на Lollipop и Kitkat. –

+0

@HelloWorld Можете ли вы подтвердить, что вы использовали '

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(); 
} 
Смежные вопросы