我发现这是一个老问题,但对于像我一样苦苦挣扎的人,你可以使用
lineChart.setViewPortOffsets(...)
方法来玩弄填充物。 (请记住,您还需要更新图表的边距,使其不会缩小)
尝试为图表类设置边距
通过使用
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(left,top,right,bottom);
charId.setLayoutParams(layoutParams);
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
您需要覆盖
getOffsetForDrawingAtPoint()
的 MarkerView
并使用 chartView.width
计算标记位置。计算前需要将图表视图设置为MarkerView.chartView
。
这对我有用 -
override fun getOffsetForDrawingAtPoint(posX: Float, posY: Float): MPPointF {
if (posX > chartView.width - width) {
offset.x = (-width).toFloat()
} else {
offset.x = (-(width / 2)).toFloat()
}
offset.y = -(height / 2).toFloat()
return offset
}
在我的例子中是:首先你只需在 customMarkerView 类中重写 getOffset() 并返回 MPPointF(-(width / 2f), -height.toFloat())
之后,将图表视图设置为MarkerView.chartView。
就我而言是这样的。
val 标记 = CustomMarkerView(requireContext(),R.layout.custom_market_view,dataMarker) 标记.chartView = 绑定.chartDiscover