2012-07-04 26 views
23

Tengo Fragment (la versión de compatibilidad) con EditText en su diseño. Estoy usando un ViewFlipper para voltear entre fragmentos. Cuando llego a este particular Fragment, el teclado virtual se abre automáticamente. Esto no es lo que quiero. Esto es lo que he tratado de detener o esconder.EditText abre automáticamente el teclado virtual cuando Fragment está visible con ViewPager

intentado:

android:descendantFocusability="beforeDescendants" 

en vista principal del fragmento

intentado:

android:windowSoftInputMode="stateHidden" 

y

android:windowSoftInputMode="stateAlwaysHidden" 

en el manifiesto de la actividad

intentado:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(mViewPager.getChildAt(position).getWindowToken(), 0); 

en el OnPageChangeListener de mi ViewPager

intentado:

InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(voucherView.findViewById(R.id.redeem_mobile_number).getWindowToken(), 0); 

en onCreateView en mi Fragmento

intentado:

InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getView().findViewById(R.id.redeem_mobile_number).getWindowToken(), 0); 

en onStart en mi Fragmento

intentado:

voucherView.findViewById(R.id.redeem_mobile_number).clearFocus(); 

en onCreateView en mi Fragmento

Me parece como onPageChangeListener es el lugar para hacer esto porque las otras llamadas ocurren antes de que el suave el teclado está realmente abierto. Cualquier ayuda sería genial.

+0

Para ocultar el teclado dentro de un try fragmento:. InputMethodManager imm = (InputMethodManager) getSherlockActivity() getSystemService (Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow (inputSearch.getWindowToken(), 0); P.S el inputSearch es el campo EditText –

Respuesta

60

This post tiene una solución al problema.

La respuesta fue agregar android:focusableInTouchMode="true" al LinearLayout que contiene el EditText. Ahora no abre automáticamente el teclado virtual.

+0

Muy bonito, corto y limpio. Gracias –

5

¿Has probado esto?

<activity 
    android:name=".YourActivityName" 
    android:configChanges="keyboardHidden|orientation" 
    android:windowSoftInputMode="stateHidden" /> 

EDIT:

probar este (ahora es un mal, pero darle una oportunidad a este) :)

Thread splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 

       sleep(1); 
      } catch (InterruptedException e) { 
       // do nothing 
      } finally { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
         imm.hideSoftInputFromWindow(youreditText.getWindowToken(), 0); 

        } 
       }); 

      } 
     } 
    }; 
    splashTread.start(); 
+0

combinación de android: configChanges y android: windowSoftInputMode es importante. –

+0

Acabo de intentarlo ahora y no ayudó –

+0

Tu edición funcionó la primera vez que pasé a la vista del Fragmento, pero no funcionó después de eso. Definitivamente no parece la forma correcta de hacerlo –

7
<LinearLayout 
     android:id="@+id/layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:focusable="true" 
     android:focusableInTouchMode="true"   
     > 

    <EditText 
     android:id="@+id/retailer_search_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     /> 

</LinearLayout> 

Solo tienes que seguirlo. Y EditText debería estar dentro de LinearLayout.

+0

Lo que quiero es cómo establecer el foco en el campo de búsqueda después de mostrar el teclado! –

0

Esto funcionó para mí.

edittext.setInputType(InputType.TYPE_NULL);  
if (android.os.Build.VERSION.SDK_INT >= 11) 
{ 
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT); 
    edittext.setTextIsSelectable(true); 
} 
0

Trate Esta

exitText.setFocusableInTouchMode(true); 
1

Agregar a su etiqueta de actividad en AndroidManifest.xml keyboardHidden: no va a dejar que se abra el teclado de entrada de software automáticamente.

android:configChanges="orientation|keyboardHidden|screenSize" 
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|stateHidden" 
1

que tenía una ventana emergente perturbadoramente teclado en pantalla y empujando todos los puntos de vista cuando hago clic en una edición de texto en una vista fragmento (mi aplicación es una aplicación de fragmentos anidados - fragmento en fragmento)

Probé una docena de soluciones aquí y en Internet, pero nada ayudó excepto esto, que es editar el EditText en XML (no la vista arriba/no el manifiesto/no sobrescribir en crear actividades/ninguna otra)

sumando android:focusableInTouchMode="false" alinee a su xml de EditText.

Tomé prestado la solución de ACengiz en este hilo

how to block virtual keyboard while clicking on edittext in android?

sólo 2 personas votaron por él? aunque para mí fue un protector después de horas de un dolor de cabeza

Cuestiones relacionadas