2010-08-16 14 views
17

Ci sono un EditText e un TextView nella mia attività. Voglio mettere a fuoco il TextView all'avvio dell'attività. Ho utilizzato il seguente codice:Come impostare lo stato attivo su un TextView all'avvio di un'attività?

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

Ma il codice non funziona. EditText riceve sempre lo stato attivo all'avvio dell'attività.

Qualcuno può aiutare?

Grazie.

risposta

13

Questo è previsto quando si avvia l'attività utilizzando il touch screen. Quando in "modalità tocco", solo un paio di visualizzazioni (EditText e ListView) possono ricevere il focus. Se avvii la tua applicazione utilizzando la trackball vedrai il focus su TextView. Quello che stai vedendo è il risultato corretto e atteso.

+1

Come fare il contrario. Ad esempio, ho un campo di modifica numerico come primo oggetto ui e sempre riceve lo stato attivo e fa apparire la tastiera. Non voglio che la tastiera compaia. – Pentium10

+0

Quindi, ho bisogno di impostare il TextView per essere messa a fuoco in modalità touch? – user256239

11

Mi sono imbattuto con la tua domanda ora. Forse dopo 2 anni hai trovato una soluzione. Ma lo scrivo qui per gli altri che troveranno questo in futuro. L'unica cosa che devi fare è andare allo AndroidManifest.xml, trovare lo Activity in cui vuoi questo comportamento e aggiungere questo android:windowSoftInputMode="stateHidden". Quindi, all'inizio di Activity non verrà visualizzata alcuna tastiera, fino a quando non tocchi l'oggetto EditText.

8

Se qualcuno si chiede ancora, è possibile utilizzare il seguente nel layout xml per fare un attivabile TextView in modalità touch:

android:focusableInTouchMode="true" 
2

Aggiungere il TextView proprietà nel layout

android:focusable="false" 

E 'un lavoro per me.

0

È possibile impostare lo stato attivo su qualsiasi widget o TextView dal xml dell'attività. Basta aggiungere requestFocus prima della fine di 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

Per richiedere attenzione per TextView è necessario impostare focusable="true" e focusableInTouchMode="true" come segue:

<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

Utilizzare questa:

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

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

questo prende fuoco fuori del EditText e lo mette sulla TextView.

Problemi correlati