Lorsque mon activité avec une disposition ScrollView
et EditText
s démarre, les EditText
s se concentrent et le clavier OnScreen Android Android) s'ouvre.
Comment puis-je éviter cela?
Quand j'utilisais LinearLayout
et RelativeLayout
sans ScrollView
cela n'arrive pas.
Je l'ai essayé de cette façon et cela fonctionne, mais ce n'est pas un bon moyen de le faire:
TextView TextFocus = (TextView) findViewById(R.id.MovileLabel);
TextFocus.setFocusableInTouchMode(true);
TextFocus.requestFocus();
Ensuite, vous avez un exemple de certaines de mes dispositions avec ce problème, lorsque cette activité démarre, le focus passe au premier EditText
, Description et au Android = le clavier s'ouvre automatiquement, c'est très ennuyeux.
<?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>
Android ouvre automatiquement le OnScreenKeyboard si vous avez un EditText
concentré au début de l'activité.
Vous pouvez empêcher cela en ajoutant des suivis dans la méthode onCreate
de votre activité.
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Si vous souhaitez le faire en modifiant le manifeste Android:
<activity
Android:name=".Dades"
Android:label="@string/app_name"
Android:windowSoftInputMode="stateHidden">
la ligne Android:windowSoftInputMode="stateHidden"
est celui qui empêche la mise au point du clavier.
Une autre façon consiste à ajouter sur LinearLayout:
Android:focusable="true"
Android:focusableInTouchMode="true"
Permettez-moi d'indiquer que
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
fait toujours la même chose, mais le curseur est toujours là.
Ce sera un comportement inapproprié
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
mais il le fera en douceur (faites-le dans manifest
pour cette activité)
Android:windowSoftInputMode="stateHidden"
Vous pouvez également utiliser la déclaration ci-dessous,
(EditTextName) .setInputType (0)
il masque définitivement le clavier par défaut de l'Edittext perticulaire, même sur EditText Touch ou Click.