2012-07-04 8 views
23

Ich habe eine Fragment (die Kompatibilitätsversion) mit einem EditText in seinem Layout. Ich verwende eine ViewFlipper, um zwischen Fragmenten zu wechseln. Wenn ich zu diesem bestimmten Fragment komme, öffnet die weiche Tastatur automatisch. Das ist nicht was ich will. Hier ist, was ich versucht habe, es zu stoppen oder es zu verstecken.EditText öffnet automatisch die Soft-Tastatur, wenn Fragment mit ViewPager sichtbar ist

versucht:

android:descendantFocusability="beforeDescendants" 

auf der Hauptansicht fragment

versucht:

android:windowSoftInputMode="stateHidden" 

und

android:windowSoftInputMode="stateAlwaysHidden" 

im Manifest für die Aktivität

Versuchte:

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

auf dem OnPageChangeListener meiner ViewPager

Versuchte:

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

in onCreateView in meinem Fragment

versucht:

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

in onStart in meinem Fragmente

Versucht:

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

in onCreateView in meinem Fragmente

Es scheint mir, wie onPageChangeListener der Ort ist, dies zu tun, weil die anderen Anrufe vor dem weichen passieren Die Tastatur ist tatsächlich geöffnet. Jede Hilfe wäre großartig.

+0

Um die Tastatur innerhalb eines Fragments try zu verstecken. InputMethodManager imm = (InputMethodManager) getSherlockActivity() getSystemService (Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow (inputSearch.getWindowToken(), 0); P.S inputSearch ist das EditText Feld –

Antwort

60

This Post hat eine Lösung für das Problem.

Die Antwort war android:focusableInTouchMode="true" zu der LinearLayout, die EditText enthält. Jetzt wird die Soft-Tastatur nicht automatisch aufgerufen.

+0

Sehr schön, kurz und sauber. Danke –

5

Haben Sie das versucht?

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

EDIT:

versuchen, diese (ich es jetzt schlecht ist, aber einen Versuch dazu geben) :)

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

Kombination von Android: ConfigChanges und Android: WindowSoftInputMode ist wichtig. –

+0

Ich habe es gerade versucht und es hat nicht geholfen –

+0

Ihre Bearbeitung funktionierte beim ersten Mal, als ich zur Ansicht des Fragments wischte, aber danach ging es nicht. Es scheint definitiv nicht der richtige Weg, dies zu tun –

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> 

Folgen Sie einfach. Und EditText sollte innerhalb eines LinearLayout sein.

+0

Was ich will, ist wie man den Fokus auf das Suchfeld nach dem Anzeigen der Tastatur setzt! –

0

Das funktionierte für mich.Versuchen

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

Diese

exitText.setFocusableInTouchMode(true); 
1

Fügen Sie diese auf Ihrem Aktivitäts-Tag in AndroidManifest.xml keyboardHidden: wird es weich Eingabetastatur nicht automatisch öffnen lassen.

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

ich einen Soft-Tastatur verstörend Popup hatte und schob alle Ansichten auf, wenn ich in einer Fragmentsicht auf einen Text bearbeiten klicken (meine App ist eine App von verschachtelten Fragmente - Fragment in Fragmente)

Ich habe versucht, ein Dutzend Lösungen hier und im Internet, aber nichts half außer dieser, die die EditText selbst in XML bearbeiten (nicht die Ansicht über/nicht das Manifest/nicht auf Aktivitäten erstellen/nicht andere)

durch Hinzufügen android:focusableInTouchMode="false" Linie zu Ihrem EditText xml.

Ich lieh mir die Lösung von ACengiz auf diesen Thread

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

Nur 2 Personen für ihn gestimmt haben? obwohl für mich war es ein Sparer nach Stunden Kopfschmerzen

Verwandte Themen