点击listitem的时候,上面的按钮也跟着变色了,如何解决?

鸿雁在云 发布于 2012/03/26 13:50
阅读 1K+
收藏 0

图中所示为已经点击时的效果。 “开始阅读”为按钮  本来是绿色的,点击时才变成红色
现在点击这个listitem的时候  按钮就变色了   但是没有响应按钮的事件

listitem和button的点击效果都是靠selector做的 就是如这种:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:drawable="@drawable/bookcity_list_1_button_1_down" />

    <item android:drawable="@drawable/bookcity_list_1_button_1_up" />

</selector>

感觉是我点击item的时候  item和button的selector都做了判断并响应,怎么才能让button不跟着变色呢?

加载中
0
LiangX
LiangX
没发现类似的问题,能把代码贴出来看一下吗
0
Monkey
Monkey
listView.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.textView1, new String[] { "A", "B", "C" }) {

@Override
public View getView(int position, View convertView, ViewGroup parent) {

final View view = super.getView(position, convertView, parent);
final TextView textView = (TextView) view.findViewById(R.id.textView3);
textView.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
textView.setTextColor(Color.RED);
}
});
return view;
}
});
textView3就是你的那个变色的,我这里换成按钮不能高亮了。所以用textview代替。
鸿雁在云
鸿雁在云
你这样,字色点击之后不就一直改变了吗?我要求只是点击的时候变色,松手后恢复
0
Monkey
Monkey
listView.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.textView1, new String[] { "A", "B", "C" }) {

@Override
public View getView(int position, View convertView, ViewGroup parent) {

final View view = super.getView(position, convertView, parent);
final TextView textView = (TextView) view.findViewById(R.id.textView3);
textView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_UP:
textView.setTextColor(Color.BLACK);
break;
case MotionEvent.ACTION_DOWN:
textView.setTextColor(Color.WHITE);
break;

}
return true;
}
});
return view;
}
});
换个监听就不就是了。我这里颜色是瞎写的,你自己要改啊。还有个Bug,长按键的时候不会调用。在长按键的时候你还要再加一个。
Monkey
Monkey
@鸿雁在云 : 你换哪里的图片啊,难道你那个字体变色是图片控制的吗?直接用textcolor控制就是了。
Monkey
Monkey
@鸿雁在云 : case MotionEvent.ACTION_MOVE:直接在这里当做释放处理掉。就不会有问题了。
鸿雁在云
鸿雁在云
谢啦,试了下这个方法还是行的通的。但是存在一个问题,比如说我按住这个button,手指拖动了一下,在抬起来,就不响应up事件了,图片就永久变了,必须在点击一下才可以。然后我尝试在move事件里,在把图片给置回来,却发现点击图片很困难了。估计是大部分情况他都把我的点击当成是move了?不知道有没有好办法解决呢
0
w
wyww1989
楼主有解决办法了吗
返回顶部
顶部