2010-08-16 14 views
17

W mojej Działalności znajduje się EditText i TextView. Chcę ustawić fokus na TextView, gdy rozpoczyna się działanie. Użyłem następującego kodu:Jak ustawić fokus na TextView po rozpoczęciu działania?

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

Ale kod nie działa. EditText zawsze otrzymuje fokus, gdy rozpoczyna się aktywność.

Czy ktoś może pomóc?

Dzięki.

Odpowiedz

13

Jest to oczekiwane po uruchomieniu działania za pomocą ekranu dotykowego. W trybie "dotykowym" tylko kilka widoków (EditText i ListView) może otrzymać fokus. Jeśli uruchomisz aplikację za pomocą trackballa, zobaczysz fokus na TextView. To, co widzisz, to poprawny i oczekiwany rezultat.

+1

Jak zrobić odwrotnie. Na przykład mam pole edycji numerycznej jako pierwszy obiekt interfejsu użytkownika i zawsze otrzymuję fokus i wyskakuję na klawiaturze. Nie chcę klawiatury wyskakującej. – Pentium10

+0

Więc, muszę ustawić TextView, aby można było ustawić w trybie dotykowym? – user256239

11

Natknąłem się teraz na twoje pytanie. Może po 2 latach znalazłeś rozwiązanie. Ale piszę to tutaj dla innych, którzy spotkają się z tym w przyszłości. Jedyne co musisz zrobić, to przejść do AndroidManifest.xml, znaleźć Activity, w którym chcesz to zachowanie i dodać to android:windowSoftInputMode="stateHidden". Tak więc na początku twojej Activity żadna klawiatura nie zostanie pokazana, dopóki nie dotkniesz obiektu EditText.

8

Jeśli ktoś wciąż zastanawiasz się, można użyć następujących w xml układu dokonać aktywowana TextView w trybie dotykowym:

android:focusableInTouchMode="true" 
2

dodać TextView obiekt w układzie

android:focusable="false" 

To praca dla mnie.

0

Możesz ustawić ostrość na dowolny widget lub TextView z xml działania. Wystarczy dodać requestFocus przed końcem TextView.

<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

W celu zażądania ostrość do TextView trzeba ustawić focusable="true" i focusableInTouchMode="true" następująco:

<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

użyj:

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

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

Trwa to skupić się na EditText i umieszcza go na TextView.

Powiązane problemy