我使用MarkerView
创建了一个简单的条形图。出于Marker的目的,我正在扩展IMarker
。我需要一个标记,如git hub所示,如下所示:
但我没有得到那支箭。所以它看起来不像评论,它是一个矩形框:/
为了使它看起来像一个注释框而不是我应该使用的类的矩形框。我已经检查了MarkerImage
,MPPointF
,但不确定我应该继续这样做。
即使import com.github.mikephil.charting.utils.MPPointF;
也无效。无法导入包
@Override
public void refreshContent(Entry e, Highlight highlight) {
tv_turnOver.setText("Turn over: " + (int) e.getVal());
/*
if (e instanceof CandleEntry) {
CandleEntry ce = (CandleEntry) e;
tv_label.setText("" + Utils.formatNumber(ce.getVal(), 0, true));
} else {
tv_label.setText("" + Utils.formatNumber(e.getXIndex(), 0, true));
}*/
// super.refreshContent(e, highlight);
}
代码:
ngOnInit
答案 0 :(得分:6)
将图片用作背景
那是......
那是什么?!!!
我使用此图片来获取该箭头,而不是背景颜色'红色'
答案 1 :(得分:2)
确保您拥有最新版本的MPAndroidChart(3.0.1)。在您的设备上克隆,构建和运行示例项目。您可以看到菜单上的第一个示例“折线图 - 线条图的简单演示”具有您想要的突出显示视图。它看起来像这样:
代码位于LineChartActivity1
的示例项目中。 xml如下:
<TextView
android:id="@+id/tvContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="7dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:text=""
android:textSize="12dp"
android:textColor="@android:color/white"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
MarkerView如下:
package com.xxmassdeveloper.mpchartexample.custom;
import android.content.Context;
import android.widget.TextView;
import com.github.mikephil.charting.components.MarkerView;
import com.github.mikephil.charting.data.CandleEntry;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.highlight.Highlight;
import com.github.mikephil.charting.utils.MPPointF;
import com.github.mikephil.charting.utils.Utils;
import com.xxmassdeveloper.mpchartexample.R;
/**
* Custom implementation of the MarkerView.
*
* @author Philipp Jahoda
*/
public class MyMarkerView extends MarkerView {
private TextView tvContent;
public MyMarkerView(Context context, int layoutResource) {
super(context, layoutResource);
tvContent = (TextView) findViewById(R.id.tvContent);
}
// callbacks everytime the MarkerView is redrawn, can be used to update the
// content (user-interface)
@Override
public void refreshContent(Entry e, Highlight highlight) {
if (e instanceof CandleEntry) {
CandleEntry ce = (CandleEntry) e;
tvContent.setText("" + Utils.formatNumber(ce.getHigh(), 0, true));
} else {
tvContent.setText("" + Utils.formatNumber(e.getY(), 0, true));
}
super.refreshContent(e, highlight);
}
@Override
public MPPointF getOffset() {
return new MPPointF(-(getWidth() / 2), -getHeight());
}
}
就像这样消耗:
MyMarkerView mv = new MyMarkerView(this, R.layout.custom_marker_view);
mv.setChartView(mChart); // For bounds control