1. selector资源xml中,默认资源放在最后一行
<item android:drawable="@drawable/press" android:state_focused="true"/> 如果 <item android:drawable="@drawable/press" android:state_selected="true"/> <item android:drawable="@drawable/press" android:state_pressed="true"/> <item android:drawable="@drawable/nor"/>
2. selector xml和png资源不能重名
3. 监听View.OnClickListener事件 。
我的例子中就是监听的OnTouchListener事件,导致selector失效。
如果项目需要OnTouchListener,同时也想使用selector,方便嘛。那该如何办呢?
方案就是:修改view的setSelected属性。
eg:
view.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:{
view.setSelected(false);
break;
}case MotionEvent.ACTION_DOWN:{
view.setSelected(true);
break;
}case MotionEvent.ACTION_CANCEL:{
view.setSelected(false);
}
}
return false;
}
});

本文探讨了Android开发中selector资源文件的排列规则,指出默认资源应放在最后,并强调selector XML与PNG资源不应重名。同时,解释了OnTouchListener可能导致selector失效的情况。为了解决这个问题,建议通过在OnTouchListener内修改view的setSelected属性来实现selector的正常工作。示例代码展示了如何在ACTION_DOWN和ACTION_UP时切换view的selected状态。
7941

被折叠的 条评论
为什么被折叠?



