2010-11-10 10 views
31

Quando viene avviata la mia attività con un layout ScrollView e EditText, lo EditText s ottiene lo stato attivo e la tastiera di Android OnScreen si apre.La tastiera OnScreen si apre automaticamente all'avvio dell'attività

Come posso evitarlo?

Quando stavo usando LinearLayout e RelativeLayout senza il ScrollView non succede.

ho provato in questo modo, e funziona, ma non è un buon modo per farlo:

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

successivo è necessario un esempio di alcuni dei miei layout con questo problema, quando questa attività inizia, lo stato attivo va al primo EditText, Descrizione e la tastiera Android si apre automaticamente, questo è molto fastidioso.

<?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

lo collaudo e sì, se rimuovo lo scrollview dal mio layout, la tastiera Android non si apre automaticamente !!! il problema è per la scrollview, ma ne ho bisogno: S qualcuno può aiutare? – NullPointerException

risposta

89

Android apre l'OnScreenKeyboard automaticamente se si dispone di un EditText concentrata quando l'attività inizia.

È possibile impedirlo aggiungendo quanto segue nel metodo onCreate dell'attività.

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

funziona !!! Grazie!!! – NullPointerException

+1

La parte sempre nascosta indica che non viene visualizzata se tocchi Modifica testo? – ToothlessRebel

+0

@ToothlessRebel: sì..it lo fa! – nithinreddy

17

Se si vuole farlo modificare l'AndroidManifest:

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

la linea android:windowSoftInputMode="stateHidden" è quella che impedisce il focus della tastiera.

+0

non ha funzionato per me – Killer

0

È possibile utilizzare sotto dichiarazione inoltre,

(EditTextName) .setInputType (0)

lo farà in modo permanente nasconde tastiera predefinita di perticular EditText, anche su EditText Tocca o fai clic.

+0

e come riaprire la tastiera? – AndroidGeeks

11

Un altro modo è con l'aggiunta di LinearLayout:

android:focusable="true" 

android:focusableInTouchMode="true" 

Vorrei indicare che

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

fa ancora la stessa cosa, ma il cursore è ancora lì.

Problemi correlati