2010-08-16 12 views
17

In meiner Aktivität gibt es einen EditText und eine TextView. Ich möchte den Fokus auf die Textansicht legen, wenn die Aktivität startet. Ich habe den folgenden Code verwendet:Wie wird der Fokus auf eine Textansicht gesetzt, wenn eine Aktivität gestartet wird?

TextView myTextView = (TextView) findViewById(R.id.my_text_vew); 
    myTextView.setFocusable(true); 
    myTextView.setOnClickListener(this); 
    myTextView.requestFocus(); 

Aber der Code funktioniert nicht. Der EditText erhält immer den Fokus, wenn die Aktivität startet.

Kann jemand helfen?

Danke.

Antwort

13

Dies wird erwartet, wenn Sie die Aktivität über den Touchscreen starten. Im "Touch-Modus" können nur ein paar Ansichten (EditText und ListView) den Fokus erhalten. Wenn Sie Ihre Anwendung mit dem Trackball starten, sehen Sie den Fokus auf TextView. Was Sie sehen, ist das richtige und erwartete Ergebnis.

+1

Wie das Gegenteil zu tun ist. Zum Beispiel habe ich ein numerisches Eingabefeld als erstes ui-Objekt und erhalte immer Fokus und öffnet die Tastatur. Ich möchte nicht, dass die Tastatur eingeblendet wird. – Pentium10

+0

Also muss ich die TextView im Touch-Modus fokussierbar sein? – user256239

11

Ich kam jetzt mit Ihrer Frage. Vielleicht hast du nach 2 Jahren eine Lösung gefunden. Aber ich schreibe es hier für die anderen, die in Zukunft darauf stoßen werden. Das einzige, was Sie tun müssen, ist, gehen Sie zu der AndroidManifest.xml, finden Sie die Activity, in dem Sie dieses Verhalten möchten, und fügen Sie diese android:windowSoftInputMode="stateHidden". So wird am Anfang Ihres Activity keine Tastatur angezeigt, bis Sie das EditText Objekt berühren.

8

Wenn jemand noch fragen, können Sie die folgend in Ihrem Layout XML verwenden, um eine Textview fokussierbarem im Touchbetrieb zu machen:

android:focusableInTouchMode="true" 
2

Fügen Sie die Textview Immobilien in Layout

android:focusable="false" 

Es ist Arbeit für mich.

0

Sie können den Fokus auf ein beliebiges Widget oder eine TextView aus dem XML der Aktivität setzen. Fügen Sie einfach requestFocus vor dem TextView-Ende hinzu.

<AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView2" 
     android:layout_width="470dp" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="90dp" 
     android:layout_toEndOf="@+id/textView2" 
     android:ems="10" 
     android:textColor="#455A64" 
     android:textColorHint="#455A64" 
     android:textSize="27sp"> 

     <requestFocus /> 
    </AutoCompleteTextView> 
4

Um Fokus zu anfordern Textview Sie focusable="true" und focusableInTouchMode="true" festlegen müssen, wie folgt:

<TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Heading" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:focusable="true" 
      android:focusableInTouchMode="true"> 
       <requestFocus /> 
    </TextView> 
2

Mit dieser:

EditText mEditText = (EditText) findViewById(R.id.edit_text); 
TextView myTextView = (TextView) findViewById(R.id.my_text_vew); 

mEditText.setFocusable(false); 
myTextView.setFocusable(true); 

Das aus der EditText Fokus nimmt und setzt es auf die TextView.

Verwandte Themen