来自MPAndroidChart的BarChart的xAxes中的文字太长了 . 如何将xAxes的标签旋转90度?
现在可以在库版本2.1.6中使用
试试这个
XAxis xAxis=barChart.getXAxis(); xAxis.setLabelRotationAngle(-45);
您可以隐藏xAxis标签并将自定义文本视图设置为垂直 . 这是垂直文本视图的代码 .
public class VerticalTextView extends TextView { final boolean topDown; public VerticalTextView(Context context, AttributeSet attrs) { super(context, attrs); final int gravity = getGravity(); if (Gravity.isVertical(gravity) && (gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { setGravity((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP); topDown = false; } else topDown = true; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } @Override protected void onDraw(Canvas canvas) { TextPaint textPaint = getPaint(); textPaint.setColor(getCurrentTextColor()); textPaint.drawableState = getDrawableState(); canvas.save(); if (topDown) { canvas.translate(getWidth(), 0); canvas.rotate(90); } else { canvas.translate(0, getHeight()); canvas.rotate(-90); } canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop()); getLayout().draw(canvas); canvas.restore(); }
}
这很简单,试试这个......
XAxis xAxis = barChart.getXAxis(); xAxis.setLabelRotationAngle(90);
只需覆盖 XAxisRenderer 和 renderAxisLabels(c: Canvas) 方法 .
XAxisRenderer
renderAxisLabels(c: Canvas)
并将其设置为barChart itemView.barChart.setXAxisRenderer(CustomBarChartRenderer(itemView.barChart.viewPortHandler, itemView.barChart.xAxis, itemView.barChart.rendererXAxis.transformer))
itemView.barChart.setXAxisRenderer(CustomBarChartRenderer(itemView.barChart.viewPortHandler, itemView.barChart.xAxis, itemView.barChart.rendererXAxis.transformer))
import android.graphics.Canvas import com.github.mikephil.charting.renderer.XAxisRenderer import com.github.mikephil.charting.utils.ViewPortHandler import com.github.mikephil.charting.components.XAxis import com.github.mikephil.charting.utils.MPPointF import com.github.mikephil.charting.utils.Transformer class CustomBarChartRenderer(viewPortHandler: ViewPortHandler, xAxis: XAxis, trans: Transformer) : XAxisRenderer(viewPortHandler, xAxis, trans) { override fun renderAxisLabels(c: Canvas) { if (!mXAxis.isEnabled || !mXAxis.isDrawLabelsEnabled) return val yoffset = mXAxis.yOffset mAxisLabelPaint.typeface = mXAxis.typeface mAxisLabelPaint.textSize = mXAxis.textSize mAxisLabelPaint.color = mXAxis.textColor val pointF = MPPointF.getInstance(0f, 0f) if (mXAxis.position == XAxis.XAxisPosition.TOP) { pointF.x = 0.5f pointF.y = 1.0f drawLabels(c, mViewPortHandler.contentTop() - yoffset, pointF) } else if (mXAxis.position == XAxis.XAxisPosition.TOP_INSIDE) { pointF.x = 0.5f pointF.y = 1.0f drawLabels(c, mViewPortHandler.contentBottom() - yoffset, pointF) } else if (mXAxis.position == XAxis.XAxisPosition.BOTTOM) { pointF.x = 0.5f pointF.y = 0.0f drawLabels(c, mViewPortHandler.contentBottom() + yoffset, pointF) } else if (mXAxis.position == XAxis.XAxisPosition.BOTTOM_INSIDE) { pointF.x = 0.5f pointF.y = 0.0f drawLabels(c, mViewPortHandler.contentBottom() - yoffset - mXAxis.mLabelRotatedHeight.toFloat(), pointF) } else { // BOTH SIDED pointF.x = 0.5f pointF.y = 1.0f drawLabels(c, mViewPortHandler.contentTop() - yoffset, pointF) pointF.x = 0.5f pointF.y = 0.0f drawLabels(c, mViewPortHandler.contentBottom() + yoffset, pointF) } MPPointF.recycleInstance(pointF) } }
4 回答
现在可以在库版本2.1.6中使用
试试这个
您可以隐藏xAxis标签并将自定义文本视图设置为垂直 . 这是垂直文本视图的代码 .
}
这很简单,试试这个......
只需覆盖
XAxisRenderer
和renderAxisLabels(c: Canvas)
方法 .并将其设置为barChart
itemView.barChart.setXAxisRenderer(CustomBarChartRenderer(itemView.barChart.viewPortHandler, itemView.barChart.xAxis, itemView.barChart.rendererXAxis.transformer))