Открывается автоматическая клавиатура Android на экране
В одном из моих приложений есть "открывающий экран" (в основном меню), в котором есть EditText
, а затем несколько Button
s. Проблема в том, что некоторые из моих пользователей сообщают, что при открытии приложения автоматически появляется экранная клавиатура, даже если они не касаются EditText
. Насколько я могу судить, все эти пользователи используют HTC Hero.
Это ошибка в 1.5? Что-нибудь я могу с этим поделать?
Ответы
Ответ 1
Вы можете использовать следующую строку кода в методе onCreate, чтобы убедиться, что клавиатура появляется только тогда, когда пользователь нажимает на EditText
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 2
<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" в файл манифеста приложения для EACH, который вы хотите, чтобы клавиатура программного обеспечения оставалась скрытой. Это означает, что клавиатура не будет автоматически вставлена, и пользователь должен будет 'click' в текстовое поле, чтобы поднять его. Я искал почти час для чего-то, что сработало, поэтому я думал, что поделюсь.
Ответ 3
Этот код будет работать на всех версиях 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);
}
Ответ 4
Добавьте это в свой AndroidManifest.xml:
android:windowSoftInputMode="stateHidden|adjustResize"
Он отлично работает.:)
Ответ 5
Вы можете использовать либо это в методе onCreate() активности
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
или вставьте этот код в теги активности в AndroidManifest.xml
android:windowSoftInputMode="stateVisible"
Ответ 6
Вы можете добавить одну строку кода в Android Mainfest.xml под тегом активности
<activity
android:name="com.sams.MainActivity"
android:windowSoftInputMode="stateVisible" >
</activity>
это может вам помочь.
Ответ 7
В этой версии Android, когда изображение раздувается, фокус будет установлен на первый настраиваемый элемент управления по умолчанию - и если нет физической клавиатуры, появится экранная клавиатура.
Чтобы исправить это, явным образом задаю фокус в другом месте. Если фокус установлен на что угодно, кроме EditText, экранная клавиатура не появится.
Вы пробовали проверить это, запустив Android 1.5 в эмуляторе?
Ответ 8
Вы можете сделать это программно, как
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
или установите android:windowSoftInputMode="stateHidden"
в <activity tag
внутри AndroidManifest.xml
Ответ 9
Добавьте это в родительский макет XML.
android:focusable="true"
android:focusableInTouchMode="true"
Это гарантирует, что фокус не будет на editText, когда начинается действие.
Ответ 10
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(_enterPin.FindFocus(), 0);
* Это для Android.xamarin и FindFocus() - он ищет представление в иерархии, внедренной в это представление, которое в настоящее время имеет фокус, так как у меня есть _enterPin.RequestFocus() перед вышеуказанным кодом, таким образом, он показывает клавиатуру для _enterPin EditText *
Ответ 11
Это сработало для меня:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 12
Включите это, когда импорт находится сверху:
import android.view.WindowManager;
Добавить этот код в OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}