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> 

问题是我想看到文本视图的颜色应该改变为黄色,而不是相同的黑色,

就像button的行为,而不是改变背景颜色,我想改变文字的颜色

Solutions Collecting From Web of "android TextView:单击更改文本颜色"

看看这里: http : //developer.android.com/reference/android/content/res/ColorStateList.html

在这里!: 如何为TextView定义ColorStateList?

我喜欢Cristian的build议,但是扩展TextView看起来好像过火了。 此外,他的解决scheme不处理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());

您可以创build自己的TextView类来扩展Android TextView类并覆盖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); }