首先制作一个xml 名字叫marker_views
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="72dp"
android:layout_height="48dp"
android:background="@drawable/bg_marker"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_content_marker_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="4dp"
android:text="123"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/white"
android:textSize="18sp" />
</LinearLayout>
然后写一个activaty
import android.content.Context
import android.view.View
import android.widget.TextView
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.highlight.Highlight
import com.github.mikephil.charting.utils.MPPointF
class MyMarkerView(context: Context?, layoutResource: Int) :
MarkerView(context, layoutResource) {
private val mContentTv: TextView = findViewById<View>(R.id.marker_views) as TextView
override fun refreshContent(e: Entry?, highlight: Highlight?) {
mContentTv.text = e!!.y.toString()
}
override fun getOffset(): MPPointF {
return MPPointF((-(width / 2)).toFloat(), (-(1000)).toFloat())
}
}
然后在mainactivity里面
val mv: MarkerView = MyMarkerView(this, R.layout.content_marker_view)
mBarChart!!.data = mBarData
mBarChart!!.setDrawMarkers(true)
mBarChart!!.markerView = mv
即可