如何短暂时间改变textview背景颜色
怎么短暂时间改变textview背景颜色
我想要的效果其实就是类似listview那样,每个项,单击时会变一下颜色,让人知道已经点击生效了。
不过我没用listview,是一些textview纵向排列的
每个textview的onclick事件里我这么设定来改变颜色
感觉这样应该是可以的吧
但是实际执行时,单击这个textview的话,背景颜色是不会有任何变化的。
请问这是为什么
------解决方案--------------------
老兄,你可能不是太熟悉 界面的渲染机制。 你调用setBackgroundColor,只是修改了属性,并没有真正刷新。
界面线程都是消息机制, 你本身是在click事件中调用的。 他必须repaint才会真正绘制。 所以在事件中写的任何属性更改都不是立时生效的。
=============
至于你这个功能,可以用Timer实现。 设定比如500ms后再改一次。
------解决方案--------------------
可以实现OnTouchListener接口,实现 boolean onTouch(View v, MotionEvent event)方法
当event.getAction() == MotionEvent.ACTION_DOWN,改变背景颜色
当event.getAction() == MotionEvent.ACTION_UP,还原背景颜色
------解决方案--------------------
随便建个XML文件。将我写的那些复制进去就好了。没你想的那么高深!
我想要的效果其实就是类似listview那样,每个项,单击时会变一下颜色,让人知道已经点击生效了。
不过我没用listview,是一些textview纵向排列的
每个textview的onclick事件里我这么设定来改变颜色
public void onClick(View view)
{
TextView textView=(TextView)view;
Drawable background=textView.getBackground();
textView.setBackgroundColor(0xFFCECECE);
............
打开一个新的窗口
textView.setBackgroundDrawable(background);
//如果不写最后一行setBackgroundDrawable的话,是可以改变颜色的,这行代码是要恢复到原来的颜色
}
感觉这样应该是可以的吧
但是实际执行时,单击这个textview的话,背景颜色是不会有任何变化的。
请问这是为什么
------解决方案--------------------
老兄,你可能不是太熟悉 界面的渲染机制。 你调用setBackgroundColor,只是修改了属性,并没有真正刷新。
界面线程都是消息机制, 你本身是在click事件中调用的。 他必须repaint才会真正绘制。 所以在事件中写的任何属性更改都不是立时生效的。
=============
至于你这个功能,可以用Timer实现。 设定比如500ms后再改一次。
------解决方案--------------------
可以实现OnTouchListener接口,实现 boolean onTouch(View v, MotionEvent event)方法
当event.getAction() == MotionEvent.ACTION_DOWN,改变背景颜色
当event.getAction() == MotionEvent.ACTION_UP,还原背景颜色
------解决方案--------------------
随便建个XML文件。将我写的那些复制进去就好了。没你想的那么高深!