Смена цвета текста по нажатию
У меня есть TextView в котором я задал textColor. Как мне сделать так чтобы по нажатию на этот TextView текст менял цвет а при отпускании кнопки он становился изначальным.
Мой TextView
<TextView
android:id="@+id/txv_task"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="@string/task"
android:textColor="@color/color_0"
android:gravity="center"
android:textAllCaps="false"
android:textSize="24sp" />
Java с элементом кода
TextView txv_task = requireView().findViewById(R.id.txv_task);
txv_task.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Navigation.findNavController(view)
.navigate(R.id.action_navigation_menu_list_to_navigation_FragmentTasks);
}
});
Ответы (2 шт):
Автор решения: Sergei Buvaka
→ Ссылка
Создаете drawable ресурс с вот таким кодом:
// ненужные состояния убрать или же добавить свои по аналогии
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@color/white" android:state_pressed="true" />
<item android:color="@color/white" android:state_activated="true" />
<item android:color="@color/black" />
</selector>
Указываете в нем нужные цвета на каждое нужное вам состояние. После чего в атрибутах вашего TextView задаете этот drawable как textColor
android:textColor="@drawable/selected_color"
Автор решения: Kakius
→ Ссылка
попробуйте так.
private void colors() {
color.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
color.setTextColor(Color.GREEN);
break;
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
color.setTextColor(Color.BLACK);
break;
}
return true;
}
});
}