在Item 的 根布局中加上这个属性 设置 beforeDescendants
`
android:descendantFocusability
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点`
以上可能还解决不了 去创一个 自己的HorzontalScroollView 重写 里面的 onTouchEvent 方法 自己处理 onTouch 事件
public class MyHorizontalScrollView extends HorizontalScrollView{
public MyHorizontalScrollView(Context context) {
super(context);
}
public MyHorizontalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
float xDown = 0;
float yDown = 0;
float xUp = 0;
float yUp = 0;
@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.e("AAA-->>", "onTouchEvent: "+ev.getAction()+ev.getX() +"--"+ev.getY() );
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
xDown = ev.getX();
yDown = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
xUp = ev.getX();
yUp = ev.getY();
Log.e("AAA-->>Math-->", "onTouchEvent: "+Math.abs((xDown-xUp)) +"--"+Math.abs((yDown-yUp)) );
if (Math.abs((xDown-xUp)) <=20 && Math.abs((yDown-yUp)) <=20){
Log.e("AA ea gag ", "onTouchEvent: " );
onClickMyScrollListener.onClickMyScrollListener();
return true;
}
break;
}
return super.onTouchEvent(ev);
}
public interface OnClickMyScrollListener{
void onClickMyScrollListener();
}
private OnClickMyScrollListener onClickMyScrollListener;
public void setOnClickMyScrollListener(OnClickMyScrollListener onClickMyScrollListener) {
this.onClickMyScrollListener = onClickMyScrollListener;
}
}
其他类似冲突 也可以重写 OnTouch 方法