2012-04-03 11 views
0

Ich habe ein PopupWindow in einer Aktivität. Wenn der Benutzer auf das Listenelement in der Aktivität drückt, wird ein Popup-Fenster geöffnet, in dem Benutzer Informationen erhalten.Android zeigen Eingabe-Tastatur nur, wenn Benutzer eine Taste drücken

Es gibt einige EditText im Fenster. Und ich habe auch einige Tasten zur Verfügung gestellt, die einen Text voreinstellen. Wenn der Benutzer darauf drückt, wird es in den Editiertext eintreten.

Ich kann die Softkeyboard deaktivieren, wenn das erste Popup-Fenster erscheint. Aber wenn ich den Fokus auf Edittext ändere (Von einem Editiertext zu einem anderen Editiertext bewegen), wird die Tastatur angezeigt.

Ich möchte die Softkeyboard zeigen nur, wenn Benutzer auf die Schaltfläche "Tastatur anzeigen" im Popup-Fenster Wie kann ich es tun?

Aktualisiert:

public void onFocusChange(View view, boolean hasFocus) { 
    if (hasFocus) { 
     selectedEditText = (EditText)view; 
     String text = selectedEditText.getText().toString(); 
     selectedEditText.setSelection(text.length()); 
     InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(selectedEditText.getWindowToken(), 0); 
    } 
} 

ich den Code oben versucht, aber es zeigt immer noch.

Antwort

0

gesetzt onFocusChangedListener() auf jedem editText Sie und deaktivieren Tastatur Pop im Inneren haben, wenn es den Fokus hat ..

Zeigen Sie es nur, wenn der Benutzer den Knopf drückt ..

+0

ich meinen Code aktualisiert, aber es immer noch die Tastatur Fokus zeigt geändert, macht der Code etwas falsch? – Hanon

+0

@Hanon .. Code sieht in Ordnung .. versuchen Sie das Debuggen und sehen, ob es auch aufgerufen wird .. – ngesh

+0

Ich protokollierte das Ergebnis in der if Körper, der Körperteil ausgeführt hat. Ich habe hinzugefügt, um am Ende inputManager.isActive() zu testen, aber es gibt immer wahr zurück – Hanon

0

Es sehr einfache Lösung ist es auch; Erstelle einen falschen Fokus über deinem EditText und du kannst loslegen. So:

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:focusable="true" 
     android:focusableInTouchMode="true"> 
    </LinearLayout> 
    <!--Your EditText--> 
    <EditText 
     ... 
    </EditText> 

können Sie auch diese beiden Zeile oberhalb der genannten EditText in jeder Ansicht, wie Textview und so weiter hinzuzufügen.

 android:focusable="true" 
     android:focusableInTouchMode="true" 
0

Zum xml und finden Sie die Aktivität in dem Sie Tastatur Add bestimmtes Attribut auf die Aktivität ausblenden möchten ..

android:windowSoftInputMode="stateAlwaysHidden" 
Verwandte Themen