Cómo detectar EditText se centró en Android. ¿No es por el usuario final tocar el texto de edición?

Un android.widget.EditText puede conseguir el foco por dos razones como sé:

Caso 1 . Los usuarios finales tocan el texto de edición por propósito.

Caso 2 . El sistema le da automáticamente la opción Editar texto.

  • Navegación
  • Primer enfoque predeterminado

Mi pregunta es: ¿Cómo detectar el Caso 2 SOLAMENTE ? (¿Listener de eventos?)

La razón por la que quiero detectar el caso 2 es: Quiero establecer la posición actual es la última posición si el texto de edición se enfoque por el caso 2.

EditText.setOnFocusChangeListener es para ambos case1, case2 así que parece que no puedo usar esto.

¡Gracias!

Actualizado
Implemente android.view.View.OnFocusChangeListener en su actividad (por ejemplo) y configure yourView.setOnFocusChangeListener(yourActivity)
Si lo combina con OnTouchListener , puede filtrar los toques del usuario ya que onTouch () se llama primero – puede establecer un miembro de clase booleano. Asegúrese de reiniciar el booleano cuando se pierde el foco.

El código debe ser algo así:

 ... import android.view.View.OnFocusChangeListener; ... public class MainActivity extends Activity implements OnFocusChangeListener, OnTouchListener { boolean userTouchedView; @Override public View onCreateView(...) { ... yourView.setOnFocusChangeListener(this); ... } @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus && !userTouchedView)) { //YOUR CASE 2 } else if(!hasFocus) userTouchedView=false; } @Override public boolean onTouch(final View v, MotionEvent event) { if(v==yourView){ userTouchedView=true; } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.