在 HorizontalScrollView 和 BarChart 滚动之间切换
Switching between HorizontalScrollView and BarChart scroll
我有一个 MPAndroidChart BarChart,它被放置在 HorizontalScrollView 中。现在,我在图表视图中有多个条形图,图表宽度也根据我的要求固定。因为图表有默认的滚动行为,所以我可以看到所有的条形图。
唯一的问题是滚动行为不流畅并且滞后很多。
我的想法是在我开始滚动图表后禁用 HorizontalScrollView,并在我触摸图表外部时重新启用它。有人可以告诉我该怎么做吗?我希望我的问题足够清楚,没有必要为此分享任何 XML。提前致谢。
我在水平滚动视图中使用 Mpchart 时遇到了类似的问题。
我有一个使用 MpChart setOnChartGestureListener 的解决方法。
barChart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
horizontalScrollView.requestDisallowInterceptTouchEvent(true);
}
@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
horizontalScrollView.requestDisallowInterceptTouchEvent(false);
}
//.....//
@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
Log.i("GESTURE", "onChartTranslate");
if(barChart.getLowestVisibleX() == barChart.getXAxis().getAxisMinimum() || barChart.getHighestVisibleX() == barChart.getXAxis().getAxisMaximum()) {
horizontalScrollView.requestDisallowInterceptTouchEvent(false);
} else {
horizontalScrollView.requestDisallowInterceptTouchEvent(true);
}
}
});
horizontalScrollView 对象是图表所在的位置。
我有一个 MPAndroidChart BarChart,它被放置在 HorizontalScrollView 中。现在,我在图表视图中有多个条形图,图表宽度也根据我的要求固定。因为图表有默认的滚动行为,所以我可以看到所有的条形图。
唯一的问题是滚动行为不流畅并且滞后很多。
我的想法是在我开始滚动图表后禁用 HorizontalScrollView,并在我触摸图表外部时重新启用它。有人可以告诉我该怎么做吗?我希望我的问题足够清楚,没有必要为此分享任何 XML。提前致谢。
我在水平滚动视图中使用 Mpchart 时遇到了类似的问题。 我有一个使用 MpChart setOnChartGestureListener 的解决方法。
barChart.setOnChartGestureListener(new OnChartGestureListener() {
@Override
public void onChartGestureStart(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
horizontalScrollView.requestDisallowInterceptTouchEvent(true);
}
@Override
public void onChartGestureEnd(MotionEvent me, ChartTouchListener.ChartGesture lastPerformedGesture) {
horizontalScrollView.requestDisallowInterceptTouchEvent(false);
}
//.....//
@Override
public void onChartTranslate(MotionEvent me, float dX, float dY) {
Log.i("GESTURE", "onChartTranslate");
if(barChart.getLowestVisibleX() == barChart.getXAxis().getAxisMinimum() || barChart.getHighestVisibleX() == barChart.getXAxis().getAxisMaximum()) {
horizontalScrollView.requestDisallowInterceptTouchEvent(false);
} else {
horizontalScrollView.requestDisallowInterceptTouchEvent(true);
}
}
});
horizontalScrollView 对象是图表所在的位置。