2010-11-10 16 views
31

Cuando se inicia mi Actividad con un diseño ScrollView y EditText s, el EditText obtiene foco y se abre el teclado OnScreen de Android.El teclado OnScreen se abre automáticamente cuando se inicia Actividad

¿Cómo puedo evitar eso?

Cuando estaba usando LinearLayout y RelativeLayout sin el ScrollView no sucede.

he tratado de esta manera, y funciona, pero no es una buena manera de hacerlo:

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

A continuación tiene un ejemplo de algunos de mis diseños con este problema, cuando esta actividad comienza, el foco va al primer EditText, Descripción y el teclado de Android se abre automáticamente, esto es muy molesto.

<?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 pruebo y sí, si elimino la vista de desplazamiento de mi diseño, ¡el teclado de Android no se abre automáticamente! el problema es para la vista de desplazamiento, pero lo necesito: S alguien puede ayudarme? – NullPointerException

Respuesta

89

Android abre la OnScreenKeyboard automáticamente si tiene un EditText centró cuando se inicia la actividad.

Puede evitar eso agregando siguiente en el método onCreate de su actividad.

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

¡funciona! ¡¡¡Gracias!!! – NullPointerException

+1

¿La parte siempre oculta significa que no aparece si toco EditText? – ToothlessRebel

+0

@ToothlessRebel: sí ... ¡lo hace! – nithinreddy

17

Si quieren hacerlo editando el AndroidManifest:

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

la línea android:windowSoftInputMode="stateHidden" es la que evita que el foco del teclado.

+0

¿No funcionó para mí – Killer

0

Puede usar declaración abajo también,

(EditTextName) .setInputType (0)

que se esconde permanentemente teclado por defecto de perticular EDITTEXT, incluso en EditarTexto Toca o haz clic.

+0

y cómo volver a abrir el teclado? – AndroidGeeks

11

Otra forma es mediante la adición de LinearLayout:

android:focusable="true" 

android:focusableInTouchMode="true" 

Permítanme indicar que

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

todavía hace lo mismo, pero el cursor sigue ahí.

Cuestiones relacionadas