In meiner Android-Anwendung fokussiert es automatisch den ersten Button
Ich habe in meinem Layout einen orangefarbenen Umriss. Wie kann ich den Anfangsfokus vorzugsweise in XML setzen und kann dieser auf nichts gesetzt werden?
Legen Sie den anfänglichen Fokus in einer Android-Anwendung fest
Stealthcopter
Du könntest die verwenden requestFocus
Schild:
<Button ...>
<requestFocus />
</Button>
Ich finde es jedoch seltsam, dass eine Ihrer Schaltflächen automatisch fokussiert wird. Ich habe dieses Verhalten in keiner meiner Ansichten beobachtet.
-
Ja, das ist jetzt bei zwei meiner Bewerbungen passiert. Ich denke, ich könnte den Focus auf ein Element anfordern, das sich nicht wie eine TextView ändert, oder wäre dies nicht zulässig?
– Stealthcopter
30. April 2010 um 10:58 Uhr
-
@stealthcopter: Können Sie mir sagen, welche Android-Version Sie verwenden? Ich verwende 2.1 & 2.2, aber requestFocus funktioniert nicht.
– Anticafe
5. März 2011 um 15:00 Uhr
-
Nun, ich habe es in allen Versionen verwendet, aber das Problem, das ich hatte, schien von selbst zu verschwinden, also habe ich nicht viel nachgeforscht.
– Stealthcopter
6. März 2011 um 14:58 Uhr
-
Ich habe den XML-Ansatz ausprobiert, ich habe den programmatischen Ansatz ausprobiert. Der EditText behält jedoch den Fokus. SEHR NERVIG !
– Irgendwer irgendwo
25. Juli 2011 um 21:34 Uhr
-
Vince Lasmarias
@Someone Irgendwo habe ich alles oben genannte vergeblich versucht. Die Lösung, die ich gefunden habe, ist von http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android . Grundsätzlich müssen Sie ein unsichtbares Layout direkt über dem problematischen Button erstellen:
<LinearLayout android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px" >
<requestFocus />
</LinearLayout>
-
Ich konnte mich auf einen AlertDialog konzentrieren, und die Aktivierung des Focusableintouchmode half mir dabei, es richtig zu machen. Im Wesentlichen geht es so: alert.show(); alert.getButton(AlertDialog.BUTTON_POSITIVE).setFocusableInTouchMode(true);alert.getButton(AlertDialog.BUTTON_NEGATIVE).requestFocus();
– Sagar Hatekar
19. Januar 2012 um 15:30 Uhr
-
Vielen Dank! Das war der nur Lösung, die in meinem Fall funktioniert hat. Obwohl ich es etwas anders benutzt habe; Ich habe das Fokus-Zeug in a
RelativeLayout
enthält dieEditText
.– kaka
27. September 2012 um 12:49 Uhr
-
Mit Android P kommen folgende Änderungen auf die Plattform: „Ansichten mit 0-Bereich (entweder eine Breite oder eine Höhe ist 0) sind nicht mehr fokussierbar. Außerdem weisen Aktivitäten im Touch-Modus nicht mehr implizit den anfänglichen Fokus zu. Stattdessen ist er oben an Sie, den anfänglichen Fokus explizit anzufordern, falls gewünscht.”
– AustrianDude
4. Juli 2018 um 15:29 Uhr
Ruivo
Beides einstellen :focusable
und :focusableInTouchMode
zu wahr und rufen requestFocus
. Es macht den Trick.
-
Ja, das ist die wahre Lösung, um es zu beheben. Danke Anders
– Gökhansari
27. September 2013 um 12:57 Uhr
Ich fand, dass dies für mich am besten funktionierte.
In AndroidManifest.xml <activity> element
hinzufügen android:windowSoftInputMode="stateHidden"
Dadurch wird die Tastatur beim Betreten der Aktivität immer ausgeblendet.
Sam Tang
Ich füge einfach diese Codezeile hinzu onCreate()
:
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Problem gelöst.
jcw
Verwenden Sie den folgenden Code,
TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();
das sollte funktionieren.
Rubin Wang
@Someone Irgendwo habe ich das verwendet, um den Fokus zu klären:
editText.clearFocus();
und es hilft