2011-11-30 13 views
12

Tengo un TextView con el siguiente código de asignación:TextView onClick que no responden a solo toque

Answer1TextView = (TextView) findViewById(R.id.editText1); 
Answer1TextView.setOnClickListener(answer1TextViewListener); 

y aquí está mi OnClickListener:

private OnClickListener answer1TextViewListener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     if(Answer1Win){ 
      Toast.makeText(QuizScreen.this,"Correct ",2).show(); 
     } else 
     { 
      Toast.makeText(QuizScreen.this,"Incorrect, Pick Another Answer",2).show(); 
     } 
    } 
}; 

Mi problema es la tostada sólo se muestra después de una doble toque. No puedo encontrar un ajuste de las unidades de este comportamiento, lo que podría establecerse mal para no mostrar después de un solo toque.

+0

¿Funciona tanto para la correcta e incorrecta, incluso después de 2 grifos? – JustCurious

Respuesta

23

El primer clic simplemente establece el foco en el cuadro de texto a continuación, el segundo clic realidad se maneja como un clic. En lugar de utilizar un OnClickListener, es posible que tenga mejor suerte con un onFocusChangeListener

+28

Por otra parte, acaba de establecer 'androide: enfocable = "false"' para la Vista de Texto en el XML, o llame 'Answer1TextView.setFocusable (falso);'. – kcoppock

+1

KC, .setFocusable (falso); Solucionado el problema, gracias por la ayuda. –

+0

KC gracias por su sugerencia. .setFocusable (falso); trabajó para mi. Estupendo. Sigue publicando cosas útiles. gracias de nuevo – sathish

1

Como dijo Chris, el primer grifo centra la TextView y el segundo toque hace clic en él.

Configuración android:focusableInTouchMode="false" corrige el problema para pantallas táctiles, pero sin romper la funcionalidad de los dispositivos sin pantalla táctil.

Si tuviera que simplemente usar android:focusable="false" que evitaría, por ejemplo, que los usuarios de d-pad hagan clic en la vista en total.

+0

android: focusable = "false" funcionó para mí! +1 – dira

+0

Me parece que el d-pad no es realmente relevante en el mundo de hoy. No creo que 'focusable =" false "' impida la funcionalidad de los usuarios con discapacidad, por lo que puedo decir. – CorayThan

+0

@CorayThan Dado que ambos atributos son igualmente fáciles de configurar, personalmente preferiría elegir uno que no rompa la funcionalidad en ciertos dispositivos, incluso si esos dispositivos son menos comunes en este momento. Las cosas cambian (por ejemplo, los televisores con Android podrían volverse más comunes) y asumir que tus usuarios son todos pantalla táctil bien podría causar dolores de cabeza en el futuro, y en este caso no hay un beneficio inmediato de todos modos. (Exención de responsabilidad: no me he mantenido al día con Android para que asumiendo los atributos siguen haciendo lo que eran cuando escribí la respuesta) –

0

La forma correcta de hacerlo es android:clickable="true"

+0

TextView se puede hacer clic de forma predeterminada. Este probablemente no es el problema. – greg7gkb

+0

Lo he intentado ya que tengo el mismo problema. poniendo^eso, resuelve mi problema. Mi TextView solo necesita 1 toque para responder. –

1

El problema puede ser que textIsSelectable es cierto. Establezca textIsSelectable="false" para TextView en XML.

0

uso OnTouchListener lugar onFocusListener se dispara dos veces cuando se entra y sale de las claves

Cuestiones relacionadas