requestFocus funktioniert nicht korrekt bei EditText
Viel Zeit wurde damit verbracht, das problem zu lösen, und es sieht einfach aus, aber ich bin wirklich müde und konnte keine Lösung finden.
Ich habe eine Aktivität, die Tätigkeit hat 4 EditText Komponenten, 2 von Ihnen mit popup-Menü (AlertDialog) enthalten die Liste, nächste - die ist deaktiviert, um Sie zu Bearbeiten, und zuletzt - bearbeitet, und sollte zeigen, auf der soft-Tastatur, wenn der Benutzer darauf Tippen.
Auch, mein root LinearLayout hat LinearLayout enthalten, die innerhalb RelativeLayout. Die Letzte Notwendigkeit für AdvBanner. Letzte LinearLayout(RelativeLayout) ist ausgerichtet auf den Boden der root-layout.
Den Teil der XML-Beschreibung zu:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="bottom"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="bottom">
<RelativeLayout
android:id="@+id/AdvLayoutReserveArea"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="#FFFFFF"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="bottom" />
</LinearLayout>
Wenn Aktivität starten, editierbare EditText hat Fokus mit GRÜN Grenze und der cursor blinkt. Nach wenigen Sekunden, der AdvBanner geladen und angezeigt. Wenn es passiert, editierbare EditText Fokus verloren.. von diesem moment, mein Leben wie ein Alptraum.
Schauen wir uns Schritt für Schritt durch.
Problem 1.
Wenn in DIESEM MOMENT (bei Adv geladen und angezeigt wird) Benutzer bearbeitet ein EditText-Feld über die soft-Tastatur, Fokus verloren, Rand nehmen Sie einen GRAU Farbe, und wenn der Benutzer weiterhin die Eingabe ein text ist keine Ergebnis - Symbole werden nicht gedruckt (CURSOR in EditText ist auch verloren).
Ich DENKE, jeder user wird genervt - wenn Sie text eingeben, und der cursor inaktiv ist, weil im hintergrund einige adv geladen und es den Fokus für sich selbst.
Um dieses Problem zu lösen, in-Methode bei der Adv geladen ist (wird angezeigt) versuche ich wieder den Fokus manuell zu EditText durch die Methode requestFocus.
public void onAdLoaded()
{
//TODO Auto-generated method stub
//add app specific code for this event here...
//called when an ad is successfully displayed on device
CountEdit1.requestFocus();
}
Ja, der cursor zurückgegeben EditText Feld, und wenn soft-Tastatur aktiv ist, kann der Benutzer immer noch text eingeben, aber die Grenze des EditText-Feld bleiben GRAU...
HINWEIS: eigentlich bin ich nicht sicher über den Unterschied zwischen GRÜNEN und GRAUEN Grenze konzentriert EditText.. GRÜN ist in der Regel, wenn Benutzer Tippen Sie auf, und GRAU, wahrscheinlich, wenn wir wünschen, einen Fokus manuell (mithilfe von requestFocus() etc)
Problem 2. (Als Ergebnis der Solvatation Problem #1).
Nachdem der soft-Tastatur wurde geschlossen, wenn der Benutzer Tippen Sie auf Bearbeitbare EditText Feld, Fokus und der cursor erscheint im inneren, aber keine Reaktion zum anzeigen der soft-Tastatur wieder! Tippen Sie es nicht zeigen soft-Tastatur, aber die sieht aus wie die edit-Feld kopieren-Modus - wenn der user kann einen text auswählen und Ausschneiden/kopieren es in die Zwischenablage.
Mein Ziel ist es einfach für einen ersten Blick. Ich will einfach nur SPEICHERN Sie die cursor-und den Fokus auf editierbare EditText-Feld (CountEdit1), während die soft-Tastatur angezeigt wird und der Benutzer die Eingabe von text.
Und normale Reaktion, wenn der Benutzer Tippen auf EditText - wie in der Regel, nur zeigen Sie mir auf der soft-Tastatur!
Lese ich alle Ausgaben hier habe ich kombiniert verschiedene Methoden (clearFocus, requestFocusFromTouch etc), einfach nicht genug Zeit und Raum, zu beschreiben, was, das ich versucht habe zu tun, um dieses Problem zu lösen. Die wichtigsten Probleme sind oben beschrieben.
Hoffe auf Hilfe und Lösung des Problems...
Vielen Dank im Voraus..
InformationsquelleAutor Dimon | 2012-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ziel ist es gelöst, die Abhilfe ist einfacher als ich dachte. Problem #2 ist behoben, die durch die Verwendung von onClick () - Methode. Hinreichende Bedingung für das erscheinen der soft-Tastatur, die die Verwendung von sowohl clearFocus() und requestFocus () - Methoden.
Die soft-Tastatur wird angezeigt, wenn der Benutzer durch Tippen auf das EditText-Feld.
Behoben.
clearFocus()
ist für mich arbeiten. Danke 🙂InformationsquelleAutor Dimon
Funktioniert bei mir:
InformationsquelleAutor iBog
Dieses und sagen, wenn Ihr problem ist noch ungelöst.
2) mit CountEdit1.requestFocus(); in onAdLoaded(), Benutzer ist in der Lage, weiterhin das Bearbeiten-Feld nach Adv geladen wird, aber nach softkeyboard ist geschlossen, nächste klopfen durch die EditText nicht zeigen soft-Tastatur wieder! Diese situation ist müde, mir so viel..
Sind Sie auch nicht zur Anzeige der soft-Tastatur manuell ein, wenn es nicht auf seine eigenen..?
Ja, auch wenn ich versuche manuell aufrufen, eine soft-Tastatur nicht angezeigt wird.. ich habe versucht, showSoftKeyboard Methode private void showSoftKeyboard(View v) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(CountEdit1, InputMethodManager.SHOW_FORCED); } innerhalb CountEdit1.setOnClickListener(new OnClickListener() und CountEdit1.setOnFocusChangeListener(neue Ansicht.OnFocusChangeListener (), aber es nicht hilft, mich wieder.. auch hier, wenn der Benutzer durch Tippen auf einen EditText, (descrided Problem #2) - virtuelle Tastatur nicht erscheint.
Vielen Dank! Es Funktioniert für mich. Überrascht, dass es nicht mehr upvotes.
InformationsquelleAutor Swayam
Sollten Sie einen Antrag auf Fokus nach Ansicht erstellt, in fragment oder Tätigkeit:
InformationsquelleAutor zYberIs
versuchen Sie dies:
InformationsquelleAutor Irshu