2012-07-04 12 views
23

Ho un Fragment (la versione di compatibilità) con un EditText nel suo layout. Sto usando un ViewFlipper per capovolgere tra i frammenti. Quando arrivo a questo particolare Fragment, la tastiera virtuale si apre automaticamente. Questo non è quello che voglio. Ecco cosa ho provato a fermarlo o nasconderlo.EditText apre automaticamente la tastiera quando Fragment è visibile con ViewPager

provato:

android:descendantFocusability="beforeDescendants" 

sulla vista principale del frammento

provato:

android:windowSoftInputMode="stateHidden" 

e

android:windowSoftInputMode="stateAlwaysHidden" 

nel manifesto per l'attività

provato:

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

sulla OnPageChangeListener della mia ViewPager

provato:

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

in onCreateView nel mio Frammento

provato:

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

in onStart nel mio Frammento

provato:

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

in onCreateView nel mio Frammento

Mi sembra come onPageChangeListener è il posto giusto per fare questo, perché le altre chiamate avvengono prima della morbida la tastiera è effettivamente aperta. Qualsiasi aiuto sarebbe grande.

+0

Per nascondere la tastiera all'interno di una prova frammento:. InputMethodManager imm = (InputMethodManager) getSherlockActivity() getSystemService (Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow (inputSearch.getWindowToken(), 0); P.S l'inputSearch è l'EditText campo –

risposta

60

This post ha una soluzione al problema.

La risposta era aggiungere android:focusableInTouchMode="true" allo LinearLayout contenente EditText. Ora non visualizza automaticamente la tastiera virtuale.

+0

Molto bello, breve e pulito. Grazie –

5

Hai provato questo?

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

EDIT:

provare questo (ho ora è uno cattivo, ma dare una prova di questo) :)

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

combinazione di Android: configChanges e Android: windowSoftInputMode è importante. –

+0

Appena provato ora e non ha aiutato –

+0

La modifica ha funzionato la prima volta che ho strisciato alla visualizzazione del frammento, ma non ha funzionato dopo. E 'sicuramente non mi sembra il modo giusto di fare questo –

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> 

Basta seguirlo. E EditText dovrebbe essere all'interno di un LinearLayout.

+0

Quello che voglio è come impostare la messa a fuoco sul campo di ricerca dopo aver mostrato la tastiera! –

0

Questo ha funzionato per me.

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

Try This

exitText.setFocusableInTouchMode(true); 
1

Aggiungi questo al vostro tag attività nel AndroidManifest.xml keyboardHidden: non lasciarlo aperto input da tastiera morbida automaticamente.

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

ho avuto una tastiera software pop-up in modo preoccupante e spingendo tutte le viste quando clicco su un testo di modifica in vista frammento (la mia app è un'applicazione di frammenti annidati - frammento in frammento)

ho provato una dozzina di soluzioni qui e su internet, ma nulla ha aiutato eccetto questo, che è modificare lo EditText stesso in XML (non la vista sopra/non il manifest/non sovrascrivere su crea attività/non altro)

aggiungendo android:focusableInTouchMode="false" linea per il tuo xml di EditText.

ho preso in prestito la soluzione da ACengiz su questo thread

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

solo 2 persone hanno votato per lui? anche se per me è stato un risparmiatore dopo ore di un mal di testa

Problemi correlati