ユーザーがグラフに触れたときに表示ページャーのスワイプ機能を無効にし、ユーザーがグラフに触れなくなったときに戻すことができます。最初にNon-Swipable ViewPager
を定義し、ビューページャNonSwipableを作成します。
public class NonSwipableViewPager extends ViewPager {
private boolean canScroll = true;
public NonSwipableViewPager(Context context) {
super(context);
}
public NonSwipableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setCanScroll(boolean canScroll) {
this.canScroll = canScroll;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return canScroll && super.onTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return canScroll && super.onInterceptTouchEvent(ev);
}
public boolean isCanScroll() {
return canScroll;
}
}
パブリック変数に保管してください。 (デ・ベストプラクティスではないかもしれない活動でのパブリック変数でそれを維持する。)
チャートと以下のようなビューのページャの無効スワイプ能力にタッチリスナーを追加します。
View yourChart = (YourChart) view.findViewById(R.id.your_chart);
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (activity.mainViewPager != null) {
activity.mainViewPager.setCanScroll(false);
}
break;
case MotionEvent.ACTION_UP:
if (activity.mainViewPager != null) {
activity.mainViewPager.setCanScroll(true);
}
break;
}
return false;
}
});
は、私は意志、ありがとう早くそれをチェックしてください!しかし、私は前に似たようなものを試してみるのが怖いです。 –
問題ありません。これは動作するコードです。私はプロダクションアプリで使っています。 – savepopulation
ようこそ。あなたは私の答えを受け入れましたが、賞品ポイント(+50)を手に入れることができませんでしたか?ありがとう。 – savepopulation