Клавиатура OnScreen открывается автоматически при запуске Activity
Когда начнется моя активность с макетом ScrollView
и EditText
, открывается фокус EditText
и откроется клавиатура Android OnScreen.
Как я могу избежать этого?
Когда я использовал LinearLayout
и RelativeLayout
без ScrollView
, этого не происходит.
Я пробовал это так, и он работает, но это не очень хороший способ сделать это:
TextView TextFocus = (TextView) findViewById(R.id.MovileLabel);
TextFocus.setFocusableInTouchMode(true);
TextFocus.requestFocus();
Затем у вас есть пример некоторых из моих макетов с этой проблемой, когда это действие начинается, фокус переходит в первую EditText
, описание и клавиатуру Android открывается автоматически, это очень раздражает.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10px">
<RelativeLayout
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/UserLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="13px"
android:text="@string/userlabel"/>
<TextView
android:id="@+id/User"
android:layout_alignBaseline="@id/UserLabel"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test"/>
</RelativeLayout>
<View
android:layout_gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#808080"
android:layout_marginTop="5px"
android:layout_marginBottom="12px"/>
<RelativeLayout
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/DescriptionLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/desclabel"
android:layout_marginTop="13px"/>
<EditText
android:id="@+id/Description"
android:layout_alignBaseline="@id/DescriptionLabel"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="180px"/>
</RelativeLayout>
<RelativeLayout
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/EmailLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/emaillabel"
android:layout_marginTop="13px"/>
<EditText
android:id="@+id/Email"
android:layout_alignBaseline="@+id/EmailLabel"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="180px"/>
</RelativeLayout>
<RelativeLayout
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/MovilePhoneLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/movilephonelabel"
android:layout_marginTop="13px"/>
<EditText
android:id="@+id/MovilePhone"
android:layout_alignBaseline="@+id/MovilePhoneLabel"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="180px"/>
</RelativeLayout>
<View
android:layout_gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#808080"
android:layout_marginTop="5px"
android:layout_marginBottom="10px"/>
<RelativeLayout
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/applybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/apply"
android:width="100px"
android:layout_marginLeft="40dip"/>
<Button
android:id="@+id/cancelbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:width="100px"
android:layout_alignBaseline="@+id/applybutton"
android:layout_alignParentRight="true"
android:layout_marginRight="40dip"/>
</RelativeLayout>
</LinearLayout>
</ScrollView>
Ответы
Ответ 1
Android автоматически открывает OnScreenKeyboard, если у вас есть EditText
с фокусом при запуске Activity.
Это можно предотвратить, добавив следующее в свой метод Activity onCreate
.
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 2
Если вы хотите сделать это, отредактируйте AndroidManifest:
<activity
android:name=".Dades"
android:label="@string/app_name"
android:windowSoftInputMode="stateHidden">
линия android:windowSoftInputMode="stateHidden"
- это та, которая предотвращает фокус клавиатуры.
Ответ 3
Другим способом является добавление LinearLayout:
android:focusable="true"
android:focusableInTouchMode="true"
Позвольте мне указать, что
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
по-прежнему делает то же самое, но курсор все еще существует.
Ответ 4
Вы также можете использовать инструкцию ниже,
(EditTextName).setInputType(0)
он будет постоянно скрывать клавиатуру по умолчанию в редакторе Edittext, даже на EditText Touch или Click.
Ответ 5
Это будет неуместное поведение
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
но он будет делать это гладко (сделать это в manifest
для этой деятельности)
android:windowSoftInputMode="stateHidden"