我在我的项目中使用MPAndroidChart并且我有一个PieChart。我需要在饼图的中心绘制一个布局,但我必须在饼图中绘制它,而不是在顶部。
所以我修改了PieChartRenderer中的drawCenterText(Canvas c)
以从XML文件而不仅仅是文本中绘制整个布局。我的XML文件是带有自动调整TextViews的ConstraintLayout。 XML应该绘制在饼图的中心。
我在MainActivity中夸大了XML,并将其作为对PieChart的引用传递。
ViewGroup centerLayout = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.center_text_layout, mPieChart, false);
mPieChart.setCenterLayout(centerLayout);
现在,当PieChart必须绘制自己时,它还应该将centerLayout绘制在其中心。方法drawCenterLayout(Canvas canvas)
计算应该绘制centerLayout的位置。在绘图本身之前一切都很好。我不知道为什么不绘制centerLayout根(ConstraintLayout)的子节点。
这是应该从PieChart drawCenterLayout(Canvas canvas)
方法绘制centerLayout的代码片段:
ViewGroup.LayoutParams params = centerLayout.getLayoutParams();
int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(params.width, View.MeasureSpec.EXACTLY);
int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(params.height, View.MeasureSpec.EXACTLY);
centerLayout.measure(widthMeasureSpec, heightMeasureSpec);
centerLayout.layout((int)boundingRect.left, (int)boundingRect.top, (int)boundingRect.right, (int)boundingRect.bottom);
centerLayout.draw(canvas);
canvas.restore();
很明显孩子们没有正确......我该怎么办? centerLayout.measure
方法还应该自动测量孩子,对吗?
答案 0 :(得分:0)
问题在于测量方法。我必须提供适当的参数。
None