我有一个ViewPager
和一个Fragment
在viewpager中有4个按钮。我想检查在滑动到其他页面之前是否单击了任何按钮。我尝试通过ontouchevent进行操作,但没有成功。我尝试了这段代码。
l1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
l2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
l3.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
l4.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
请帮助我决定如何实现此目标。因为我想知道用户在进入下一页之前是否单击了任何按钮。
答案 0 :(得分:0)
您需要在类级别“ isAnyButtonClicked”上具有一个标志,并且还需要为每个按钮设置onClickListener。在每个按钮onClickListener上,您需要设置该标志。喜欢
boolean isAnyButtonClicked = false; // you can declare it as static as well
// Now in your fragment that is loaded in viewpager, set clicklistner for each button
l1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isAnyButtonClicked = true;
}
});
l2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isAnyButtonClicked = true;
}
});
现在在ViewScrollr上添加Viewpager onScroll Listener,以检测活动或具有查看寻呼机的片段中的滑动事件
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (isAnyButtonClicked) {
// Do whatever you want :)
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
});