2010-11-10 4 views
31

Lorsque mon activité avec une mise en page ScrollView et EditText démarre, les EditText obtiennent la mise au point et le clavier Android OnScreen s'ouvre.Le clavier OnScreen s'ouvre automatiquement lorsque l'activité démarre

Comment puis-je éviter cela?

Lorsque j'utilisais LinearLayout et RelativeLayout sans le ScrollView cela n'arrive pas.

Je l'ai essayé de cette façon, et il fonctionne, mais ce n'est pas une bonne façon de le faire:

TextView TextFocus = (TextView) findViewById(R.id.MovileLabel); 
TextFocus.setFocusableInTouchMode(true); 
TextFocus.requestFocus(); 

Ensuite, vous avez un exemple de certains de mes mises en page avec ce problème, lorsque cette activité commence, se concentre sur le premier EditText, Description et le clavier Android 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> 
+0

je l'ai testé et oui, si je supprime la scrollview de ma mise en page, le clavier android ne s'ouvre pas automatiquement !!! le problème c'est pour le scrollview, mais j'en ai besoin: S quelqu'un peut-il aider? – NullPointerException

Répondre

89

Android ouvre la OnScreenKeyboard automatiquement si vous avez un EditText lorsque l'activité focalisée commence.

Vous pouvez empêcher cela en ajoutant le suivant dans la méthode onCreate de votre activité.

getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
+0

ça marche !!! Merci!!! – NullPointerException

+1

Est-ce que la partie toujours cachée signifie qu'elle n'apparaît pas si j'appuie sur EditText? – ToothlessRebel

+0

@ToothlessRebel: oui..il le fait! – nithinreddy

17

Si vous voulez le faire éditer le AndroidManifest:

 <activity 
     android:name=".Dades" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateHidden"> 

la ligne android:windowSoftInputMode="stateHidden" est celle qui empêche le focus du clavier.

+0

didnot travail pour moi – Killer

0

Vous pouvez utiliser ci-dessous déclaration également,

(EditTextName) .setInputType (0)

il sera définitivement cache clavier par défaut de perticular EditText, même sur EditText Appuyez ou cliquez sur.

+0

et comment ouvrir le clavier à nouveau? – AndroidGeeks

11

Une autre façon est d'ajouter sur LinearLayout:

android:focusable="true" 

android:focusableInTouchMode="true" 

Permettez-moi indiquer que

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

ne fait toujours la même chose, mais le curseur est toujours là.

Questions connexes