Legen Sie den anfänglichen Fokus in einer Android-Anwendung fest

Lesezeit: 3 Minuten

Benutzer-Avatar
Stealthcopter

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?

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

  • ist hier: developer.android.com/guide/topics/resources/…

    – Erich B

    27. April 2012 um 20:43 Uhr

Benutzer-Avatar
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 die EditText.

    – 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


Benutzer-Avatar
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.

Benutzer-Avatar
Sam Tang

Ich füge einfach diese Codezeile hinzu onCreate():

this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Problem gelöst.

Benutzer-Avatar
jcw

Verwenden Sie den folgenden Code,

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();

das sollte funktionieren.

Benutzer-Avatar
Rubin Wang

@Someone Irgendwo habe ich das verwendet, um den Fokus zu klären:

editText.clearFocus();

und es hilft

1298820cookie-checkLegen Sie den anfänglichen Fokus in einer Android-Anwendung fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy