EditText ancla de selección

Tengo un listview, donde cada fila es un EditText, con un poco de texto. Cuando toco una fila, EditText obtiene el foco, muestra el cursor parpadeante y el ancla de selección (conoce las manijas de aspecto azul / gris que arrastra para seleccionar un rango de texto).

El problema es que cuando me muevo de una fila a otra (edittext a otro), sin introducir nuevo texto, el ancla de selección en el edittext anterior permanece visible durante un tiempo. Quisiera ocultar este ancla inmediatamente si el edittext no tiene foco.

¿Algunas ideas?

ClearFocus no funciona

editText.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) { } else { editText.clearFocus(); //editText.clearComposingText(); } } }); 

Captura de pantalla

El problema

One Solution collect form web for “EditText ancla de selección”

¡Finalmente lo conseguí! En primer lugar, eliminé la capacidad de enfoque de ListView . Luego escribí un OnFocusChangeListener personalizado que elimina la selección de la vista que pierde el foco. Este oyente se aplica a las vistas mediante un adaptador personalizado (envuelto ArrayAdapter , pero también puede envolver un SimpleCursorAdapter ).

Adjunto es una demo (probado en un emulador con Eclair):

 public class ListOfEditViews extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView list = new ListView(this); list.setAdapter(getAdapter()); list.setFocusable(false); list.setFocusableInTouchMode(false); setContentView(list); } private ListAdapter getAdapter() { ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.edit_text, R.id.text) { @Override public View getView (int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); view.setFocusable(true); view.setFocusableInTouchMode(true); view.setOnFocusChangeListener(listener); return view; } }; String words = "Lorem ipsum dolor sit amen"; for (String word: words.split(" ")) adapter.add(word); return adapter; } private OnFocusChangeListener listener = new OnFocusChangeListener() { public void onFocusChange(View view, boolean hasFocus) { view.dispatchWindowFocusChanged(hasFocus); } }; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.