2010-12-17 20 views
21

tengo un campo de texto que se comporta como un vínculo local, al hacer clic en él obtiene una imagen de base de datos y lo muestra. No hace ping al servidor todo el tiempo.TextView android: Cambiar el color del texto al hacer clic

Este es el código XML para la vista de texto

<TextView android:layout_marginLeft="2dp" android:linksClickable="true" 
      android:layout_marginRight="2dp" android:layout_width="wrap_content" 
      android:text="@string/Beatles" android:clickable="true" android:id="@+id/Beatles" 
      android:textColor="@color/Black" 
      android:textSize="12dp" android:layout_height="wrap_content" android:textColorHighlight="@color/yellow" android:textColorLink="@color/yellow" android:autoLink="all"></TextView> 

La cuestión es que quiero ver el color de vista de texto se debe cambiar de color amarillo, en lugar del mismo color negro,

Justo Me gusta el comportamiento del botón, pero en lugar de cambiar el color de fondo quiero cambiar un color de texto

+0

https: // stackoverflow .com/preguntas/5371719/cambio se puede hacer clic-textviews color-en-foco y hacer clic – CoolMind

Respuesta

3

Puede crear su propia clase TextView que amplíe la clase Android TextView y anule onTouchEvent(MotionEvent event)

A continuación, puede modificar el color de las instancias de texto basado en la MotionEvent pasado.

Por ejemplo:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     // Change color 
    } else if (event.getAction() == MotionEvent.ACTION_UP) { 
     // Change it back 
    } 
    return super.onTouchEvent(event); 
} 
23

me gusta lo que sugiere Cristian, pero extendiéndose TextView parece un exceso. Además, su solución no maneja el evento MotionEvent.ACTION_CANCEL, por lo que es probable que su texto permanezca seleccionado incluso después de hacer clic.

Para conseguir este efecto, he implementado mi propia onTouchListener en un archivo separado:

public class CustomTouchListener implements View.OnTouchListener {  
    public boolean onTouch(View view, MotionEvent motionEvent) { 
    switch(motionEvent.getAction()){    
      case MotionEvent.ACTION_DOWN: 
      ((TextView)view).setTextColor(0xFFFFFFFF); //white 
       break;   
      case MotionEvent.ACTION_CANCEL:    
      case MotionEvent.ACTION_UP: 
      ((TextView)view).setTextColor(0xFF000000); //black 
       break; 
    } 
     return false; 
    } 
} 

A continuación, puede asignar este a lo TextView desea:

newTextView.setOnTouchListener(new CustomTouchListener());

+1

Gracias su código funciona para mí. He hecho un retorno verdadero en tu respuesta y funciona para mí ... –

Cuestiones relacionadas