2012-10-23 10 views
11

Eventuali duplicati:
Disable EditText blinking cursorrimuovere cursore da EditText

Ho 2 campi EditText nella mia attività con un testo in esso:

EditText nameText=(EditText) findViewById(R.id.update_name_text); 
nameText.setText(Info.getName()); 

EditText phone=(EditText) findViewById(R.id.phone_number); 
phone.setText(Info.getPhoneNo()); 

Quando eseguo il app sul mio dispositivo e tocca il campo nameText, compaiono un cursore e una tastiera. Tuttavia, quando nascondo la tastiera, la tastiera si spegne ma il cursore rimane. Come posso rendere il cursore invisibile pure.

Quando si preme Invio da nameText, il cursore si sposta sul campo phone e la tastiera è ancora visibile. Questo è corretto. Ma quando nascondo la tastiera o premo invio dal campo phone, la tastiera scompare ma il cursore rimane.

Esiste un modo (diverso dall'uso di setOnEditorActionListener) per rendere il cursore invisibile anche nelle situazioni precedenti?

+2

Si stanno risolvendo i problemi di nonesistenza. Che dire dei dispositivi con tastiera hardware, ad esempio? –

risposta

31

per rimuovere il cursore da EditText è necessario impostare

nameText.setFocusable(false); 

e al cursore visibile impostare

nameText.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       nameText.setFocusableInTouchMode(true); 

       return false; 
      } 
}); 

mostrerà il cursore in EditText ...

+13

Non voglio il cursore invisibile in modo permanente. Lo voglio solo invisibile quando la tastiera è nascosta – Ankush

+0

che funziona per me .. ma non è necessario impostare 'nameText.setFocusableInTouchMode (true);' –

+0

@AmitabhaBiswas Quando l'utente toccherà nuovamente lo stesso edittext, il cursore dovrebbe essere visibile. – Sumant

7

android:cursorVisible in XML, o setCursorVisible() nel codice per nascondere/mostrare il cursore, ed è possibile utilizzare il metodo spiegato here per determinare quando la tastiera è apparso & scomparso.

+2

Non voglio il cursore invisibile in modo permanente. Lo voglio solo invisibile quando la tastiera è nascosta - – Ankush

1

Nel file XML può vedere che l'attributo <requestFocus> è stato aggiunto automaticamente per EditText.

Così ogni volta che l'attività inizia, il tuo EditText riceve lo stato attivo.

Quindi rimuovilo prima e prova ...

Risposta aggiornamento:

Se non volete modificare il campo nameText

È possibile utilizzare

nameText.setEnabled(false); 

E anche se u vuole Modifica esso alcuni casi,

Si può fare,

nameText.setEnabled(true); 

Ancora è possibile aggiornare il campo nameText da programatically,

Ad esempio, utilizzando nameText.setText(Info.getname());

Se si desidera che l'utente modifiche sul testo visibile, allora si può fare

nameText.setEnabled(true); 

Funzionerà come ci si aspetta.

+0

Ho già rimosso l'attributo 'requestfocus' – Ankush

+0

Vedere la risposta aggiornata nel post –

Problemi correlati