我有一个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;
}
});
请帮我决定如何实现这一点。我想知道用户是否点击了任何按钮,然后再转到下一页。
你需要在类级别“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;
}
});
现在添加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) {}
});