Hacer un estado seleccionado para textview (resaltado)

Así que actualmente, estoy tratando de crear un estado seleccionado para tres vistas de texto

Actualmente, para cada una de las vistas de texto (HMS) el texto es rojo:

introduzca la descripción de la imagen aquí

Sin embargo, cuando toque el HM o SI quiere que a su vez otro color – blanco.

Así que traté de seguir esto:

Android – Cambiar el color de la vista de texto en el cambio de estado

y lo hice (selected_text.xml):

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="#ffd10011"/> <!-- selected --> <item android:color="@color/red_highlight"/> <!-- default --> </selector> 

y aplicó que:

  <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Hours" android:textSize="30sp" android:textColor="@color/selected_text" android:id="@+id/hourtext" android:layout_marginLeft="45dp" android:layout_alignTop="@+id/minutetext" android:layout_alignLeft="@+id/seekArc" android:layout_alignStart="@+id/seekArc" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Minutes" android:textSize="30dp" android:textColor="@color/selected_text" android:id="@+id/minutetext" android:layout_below="@+id/seekArc" android:layout_centerHorizontal="true" android:layout_marginTop="28dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Second" android:textSize="30dp" android:textColor="@color/selected_text" android:id="@+id/secondtext" android:layout_alignTop="@+id/minutetext" android:layout_alignRight="@+id/seekArc" android:layout_alignEnd="@+id/seekArc" android:layout_marginRight="43dp" /> 

Sin embargo, las vistas de texto no cambian de color después de hacer clic en ellos.

¿Cómo puedo solucionar esto?

También, me preguntaba si es mejor implementar esto en código de java puesto que necesito realizar una diversa función después de que cada textview sea chascado / resaltado. Si es así, ¿cómo se puede implementar?

Puede hacerlo de forma programática de la siguiente manera:

 findViewById(R.id.txt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TextView textView = (TextView) v; if (textView.isSelected()) { textView.setTextColor(Color.RED); v.setSelected(false); } else { textView.setTextColor(Color.BLUE); v.setSelected(true); } } }); 

Y aquí está mi diseño:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/txt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="some text" android:textSize="20sp" android:textColor="#FF0000"/> </LinearLayout> 

EDITAR:

Para su caso específico sería como:

 View previousView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { TextView previousText = (TextView) previousView; TextView curText = (TextView) v; // If the clicked view is selected, deselect it if (curText.isSelected()) { curText.setSelected(false); curText.setTextColor(Color.RED); } else { // If this isn't selected, deselect the previous one (if any) if (previousText != null && previousText.isSelected()) { previousText.setSelected(false); previousText.setTextColor(Color.RED); } curText.setSelected(true); curText.setTextColor(Color.BLUE); previousView = v; } } }; findViewById(R.id.txt).setOnClickListener(clickListener); findViewById(R.id.txt2).setOnClickListener(clickListener); findViewById(R.id.txt3).setOnClickListener(clickListener); } 
  • AutoCompleteTextView con lista personalizada: cómo configurar OnItemClickListener
  • Xml extraer elementos del analizador xml
  • Android XML redondeado esquinas recortadas
  • Se muestra Google Maps Android sólo pantalla en blanco
  • ¿Cómo maneja el XmlPullParser de Android las vulnerabilidades?
  • Adición de botones de radio personalizados en android
  • XmlPullParser getAttributeValue devuelve null
  • Centrar un TextView en un TableRow en un TableLayout
  • Quitar la sombra de ActionBar en Android L (API 21)
  • Android hacer botón 1/3 de ancho de pantalla y la altura en el diseño relativo
  • Simple HTML (o XML) para Android Native Converter
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.