Подтвердить что ты не робот

Android TextView: изменение цвета текста при нажатии

У меня есть текстовое поле, которое ведет себя как локальная ссылка, щелкая по нему, извлекает изображение из базы данных и показывает его. Он не выполняет ping на сервере все время.

Вот код xml для текстового представления

<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>

Вопрос в том, хочу ли я видеть, что цвет текстового представления должен быть изменен желтым, вместо того же черного цвета,

Просто как поведение кнопки, но вместо изменения цвета фона я хочу изменить цвет текста

4b9b3361

Ответ 2

Мне нравится то, что предлагает Кристиан, но расширение TextView кажется излишним. Кроме того, его решение не обрабатывает событие MotionEvent.ACTION_CANCEL, что позволяет предположить, что ваш текст останется выбранным даже после нажатия.

Чтобы добиться этого эффекта, я внедрил свой собственный onTouchListener в отдельный файл:

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;   
    } 
}

Затем вы можете назначить это любому TextView, который вы хотите:

newTextView.setOnTouchListener(new CustomTouchListener());

Ответ 3

Вы можете создать свой собственный класс TextView, который расширяет класс TextView Android и отменяет onTouchEvent(MotionEvent event)

Затем вы можете изменить цвет текста экземпляров на основе переданного MotionEvent.

Например:

@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);
}