Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MPAndroidChart:在条形图中将X轴标签旋转90度_Android_Mpandroidchart - Fatal编程技术网

MPAndroidChart:在条形图中将X轴标签旋转90度

MPAndroidChart:在条形图中将X轴标签旋转90度,android,mpandroidchart,Android,Mpandroidchart,我在中的条形图xAxes中的文本太长。如何将XAX的标签旋转90度 您可以隐藏xAxis标签并放置垂直的自定义文本视图。 下面是垂直文本视图的代码 public class VerticalTextView extends TextView { final boolean topDown; public VerticalTextView(Context context, AttributeSet attrs) { super(context, attrs); final int

我在中的条形图xAxes中的文本太长。如何将XAX的标签旋转90度

您可以隐藏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();
}

}

现在可以在库版本2.1.6中使用

试试这个

XAxis xAxis=barChart.getXAxis();
xAxis.setLabelRotationAngle(-45); 

很简单,试试这个

XAxis xAxis = barChart.getXAxis();
xAxis.setLabelRotationAngle(90); 

只需重写
xaxisrender
renderAxisLabels(c:Canvas)
方法

并将其设置为barChart
itemView.barChart.SetXaxRenderer(CustomBarChartRenderer(itemView.barChart.viewPortHandler,itemView.barChart.xAxis,itemView.barChart.RenderXaxis.transformer))


如何在MPChartAndroid中执行此操作?将图表放在一个布局中,并将此文本视图放在图表的左侧。并隐藏xAxis标签。我已经在我的柱状图上使用了这个图案。不,亲爱的皮尤斯。我的意思不是xAxis标签。所有XAxis标签都依赖于Xvalue。你明白了吗?ArrayList xVals=new ArrayList();对于(int i=0;i 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) } }