3168 Stimmen

Wie kann man verhindern, dass EditText den Fokus erhält, wenn eine Aktivität in Android startet?

Ich habe eine Activity in Android, mit zwei Elementen:

  1. EditText
  2. ListView

Wenn mein Activity beginnt, wird die EditText hat sofort den Eingabefokus (blinkender Cursor). Ich möchte nicht, dass ein Steuerelement beim Starten den Eingabefokus hat. Ich habe es versucht:

EditText.setSelected(false);
EditText.setFocusable(false);

Ohne Erfolg. Wie kann ich die EditText nicht selbst zu wählen, wenn die Activity beginnt?

29voto

Sid Punkte 9498

Wenn Sie eine andere Sicht auf Ihre Aktivität haben, wie zum Beispiel eine ListView können Sie auch tun:

ListView.requestFocus(); 

in Ihrem onResume() um den Fokus von der editText .

Ich weiß, dass diese Frage bereits beantwortet wurde, aber ich wollte nur eine alternative Lösung anbieten, die bei mir funktioniert hat :)

18voto

Jim Punkte 179

Spät, aber vielleicht hilfreich. Erstellen Sie einen Dummy-EditText am oberen Rand Ihres Layouts und rufen Sie dann myDummyEditText.requestFocus() en onCreate()

<EditText android:id="@+id/dummyEditTextFocus" 
android:layout_width="0px"
android:layout_height="0px" />

Das scheint sich so zu verhalten, wie ich es erwarte. Keine Notwendigkeit, Konfigurationsänderungen, etc. zu behandeln. Ich brauchte dies für eine Aktivität mit einer langen TextView (Anweisungen).

17voto

mark Punkte 1677

Ja, ich habe das Gleiche getan - ich habe ein lineares Dummy-Layout erstellt, das den ersten Fokus erhält. Darüber hinaus setze ich die "nächste" Fokus-IDs, so dass der Benutzer es nicht mehr nach Scrollen einmal fokussieren kann:

<LinearLayout 'dummy'>
<EditText et>

dummy.setNextFocusDownId(et.getId());

dummy.setNextFocusUpId(et.getId());

et.setNextFocusUpId(et.getId());

eine Menge Arbeit, nur um den Fokus auf eine Ansicht loszuwerden

Danke

8voto

drei01 Punkte 198

Ich verwende den folgenden Code, um zu verhindern, dass ein EditText den Fokus stiehlt, wenn meine Schaltfläche gedrückt wird.

addButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        View focused = internalWrapper.getFocusedChild();
        focused.setVisibility(GONE);
        v.requestFocus();
        addPanel();
        focused.setVisibility(VISIBLE);
    }
});

Blenden Sie den Bearbeitungstext zunächst aus und dann wieder ein. Dies funktioniert für mich, da der EditText ist pas zu sehen, so dass es keine Rolle spielt, ob sie angezeigt wird.

Sie können versuchen, es nacheinander aus- und wieder einzublenden, um zu sehen, ob es dadurch unscharf wird.

4voto

Albert Oclarit Punkte 59

Versuchen Sie

edit.setInputType(InputType.TYPE_NULL);

edit.setEnabled(false);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X