如何在MPAndroidChart中删除或隐藏MarkerView?
我用它做了一个条形图。我创建了一个自定义标记视图类来查看条的值。如何在MPAndroidChart中删除或隐藏MarkerView?,android,bar-chart,mpandroidchart,Android,Bar Chart,Mpandroidchart,我用它做了一个条形图。我创建了一个自定义标记视图类来查看条的值。 我会在几秒钟后删除或隐藏视图。它应该起到敬酒的作用。但我做不到。 这首先是一个问题,因为在我第一次触摸图表后,它变得可见,只有在我找到正确的条件时,它才会消失 有人知道如何解决这个问题吗 在我的代码中,我有: mChart.invalidate(); mv = new CustomMarkerView(getContext(), R.layout.alert_chart, position, jsonResponse); mCha
我会在几秒钟后删除或隐藏视图。它应该起到敬酒的作用。但我做不到。
这首先是一个问题,因为在我第一次触摸图表后,它变得可见,只有在我找到正确的条件时,它才会消失 有人知道如何解决这个问题吗 在我的代码中,我有:
mChart.invalidate();
mv = new CustomMarkerView(getContext(), R.layout.alert_chart, position, jsonResponse);
mChart.setMarker(mv);
我的客户MarkerView是
public class CustomMarkerViewextends MarkerView {
public TextView correct;
public TextView wrong ;
public int position;
public JSONArray jsonArray;
public CustomMarkerView(Context context, int layoutResource, int pos, JSONArray json) {
super(context, layoutResource);
correct = (TextView) findViewById(R.id.correct);
wrong = (TextView) findViewById(R.id.wrong);
position = pos;
jsonArray = json;
}
@Override
public void refreshContent(Entry e, Highlight highlight) {
switch (position){
case 1:
try {
correct.setText(getContext().getString(R.string.correct_alert) + " " + jsonArray.getJSONObject((int)(e.getX())).getString("TP"));
wrong.setText(getContext().getString(R.string.wrong_alert) + " " + jsonArray.getJSONObject((int)(e.getX())).getString("FP"));
} catch (JSONException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
e1.printStackTrace();
}
break;
case 2:
try {
correct.setText(getContext().getString(R.string.tpr_alert) + " " + Math.round(Double.parseDouble(jsonArray.getJSONObject((int)(e.getX())).getString("TPR"))*100.0)/100.0);
wrong.setText(getContext().getString(R.string.msr_alert) + " " + Math.round(Double.parseDouble(jsonArray.getJSONObject((int)(e.getX())).getString("MSR"))*100.0)/100.0);
} catch (JSONException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
e1.printStackTrace();
}
break;
case 3:
try {
correct.setText(getContext().getString(R.string.nmean_alert) + " " +Math.round(Double.parseDouble(jsonArray.getJSONObject((int)(e.getX())).getString("n_mean"))*100.0)/100.0);
wrong.setText(getContext().getString(R.string.nmax_alert) + " " +Math.round(Double.parseDouble(jsonArray.getJSONObject((int)(e.getX())).getString("n_max"))*100.0)/100.0);
} catch (JSONException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
e1.printStackTrace();
}
break;
}
// this will perform necessary layouting
super.refreshContent(e, highlight);
}
private MPPointF mOffset;
@Override
public MPPointF getOffset() {
if(mOffset == null) {
// center the marker horizontally and vertically
mOffset = new MPPointF(-(getWidth()/2), -getHeight());
}
return mOffset;
}
}我知道,有点晚了,但是:
mChart.highlightValue(null);
为我工作将onTouchListener设置为图表,并在MotionEvent操作中将突出显示值设置为null。代码:
chart.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP: {
chart.highlightValue(null);
break;
}
}
return false;
}
});
你找到这个问题的答案了吗?有没有办法从一个单独的数据集中删除标记,而另一个数据集中仍然可以有标记?@mtsahakis,不知道这个库是否可能,但您可以做的是跟踪高亮显示的元素,以及当您需要从特定数据集中删除高亮显示时,只需调用mChart.highlightValue(null);然后重新高亮显示所有需要的值。@mtsahakis请尝试此数据集。setDrawHighlightIndicators(false)此外,如果需要隐藏此标记,例如,在滚动更改时,最好使用
图表检查标记可见性。valuesToHighlight()