Android экранная клавиатура автоматически всплывает - PullRequest
133 голосов
/ 23 марта 2010

В одном из моих приложений есть «начальный экран» (в основном меню), в котором есть EditText, за которым следуют несколько Button с.Проблема в том, что некоторые из моих пользователей сообщают, что когда они открывают приложение, оно автоматически выскакивает на экранную клавиатуру, и они даже не касаются EditText.Насколько я могу судить, все эти пользователи используют HTC Hero .

Это ошибка в 1.5?Что я могу с этим поделать?

Ответы [ 10 ]

269 голосов
/ 23 марта 2010

Вы можете использовать следующую строку кода в методе onCreate действия, чтобы убедиться, что клавиатура всплывает, только когда пользователь нажимает на EditText

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
84 голосов
/ 25 января 2012
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main"
              android:label="@string/app_name"
              android:windowSoftInputMode="stateHidden"
              >

Это работает для Android 3.0, 3.1, 3.2, 4.0 - редактор, используемый для компиляции (Eclipse 3.7)

Поместите 'windowSoftInputMode = "stateHidden"' в файл XML манифеста вашего приложения для КАЖДОЙ активностичто вы хотите, чтобы программная клавиатура оставалась скрытой. Это означает, что клавиатура не будет включаться автоматически, и пользователь должен будет «щелкнуть» по текстовому полю, чтобы вызвать ее.Я почти час искал что-то, что сработало, поэтому думал, что поделюсь.

5 голосов
/ 09 июня 2016

Добавьте это в ваш AndroidManifest.xml :

android:windowSoftInputMode="stateHidden|adjustResize"

Работает отлично.:)

5 голосов
/ 31 декабря 2015

Этот код будет работать на всех версиях Android:

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_login);

 //Automatic popping up keyboard on start Activity

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

 or

 //avoid automatically appear android keyboard when activity start
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
 }
3 голосов
/ 20 октября 2016

Вы можете использовать это либо в методе onCreate () действия

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

или вставьте этот код в теги Activity в AndroidManifest.xml

android:windowSoftInputMode="stateVisible"
2 голосов
/ 11 июля 2014

Вы можете добавить одну строку кода в Android Mainfest.xml под тегом активности

 <activity
        android:name="com.sams.MainActivity"
        android:windowSoftInputMode="stateVisible" >
 </activity>

, это может помочь вам.

1 голос
/ 19 августа 2015

Вы можете сделать это программно как

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

или установить android:windowSoftInputMode="stateHidden" в <activity tag внутри AndroidManifest.xml

1 голос
/ 23 марта 2010

В этой версии Android, когда представление завышено, фокус будет установлен на первый фокусируемый элемент управления по умолчанию - и если нет физической клавиатуры, появится экранная клавиатура.

Чтобы исправить это, явно установите фокус в другом месте. Если для фокуса установлено значение, отличное от EditText, экранная клавиатура не появится.

Вы пытались протестировать это, запустив Android 1.5 в эмуляторе?

0 голосов
/ 28 февраля 2019

Включите это, когда импорт находится на вершине:

import android.view.WindowManager;

Добавить этот код в OnCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
0 голосов
/ 13 января 2017
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
        imm.ShowSoftInput(_enterPin.FindFocus(), 0);

* Это для Android.xamarin и FindFocus () - он ищет представление в иерархии с корнем в этом представлении, которое в настоящее время имеет фокус, так как у меня есть _enterPin.RequestFocus () перед приведенным выше кодом, таким образом, он показывает клавиатуру для _enterPin EditText *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...