我附上了使用率表的屏幕截图。在红色框中显示图例,它们正在以饼图形式切割。 以下是我的代码:
pieChart.setUsePercentValues(false);
pieChart.getDescription().setEnabled(false);
pieChart.setDragDecelerationFrictionCoef(0.95f);
pieChart.setDrawHoleEnabled(true);
pieChart.setHoleColor(Color.WHITE);
pieChart.setTransparentCircleColor(Color.WHITE);
pieChart.setTransparentCircleAlpha(110);
pieChart.setHoleRadius(55f);
pieChart.setTransparentCircleRadius(57f);
pieChart.setDrawCenterText(true);
pieChart.setRotationAngle(0);
// enable rotation of the chart by touch
pieChart.setRotationEnabled(true);
pieChart.setHighlightPerTapEnabled(true);
// add a selection listener
pieChart.setOnChartValueSelectedListener(this);
pieChart.animateY(1400, Easing.EasingOption.EaseInOutQuad);
Legend l = pieChart.getLegend();
l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
l.setOrientation(Legend.LegendOrientation.VERTICAL);
l.setDrawInside(false);
l.setForm(Legend.LegendForm.CIRCLE);
l.setXEntrySpace(7f);
l.setYEntrySpace(0f);
l.setYOffset(0f);
l.setWordWrapEnabled(true);
l.setDrawInside(false);
l.getCalculatedLineSizes();
// entry label styling
pieChart.setEntryLabelColor(Color.WHITE);
pieChart.setEntryLabelTextSize(12f);
有谁知道答案?请帮我解决这个问题。谢谢提前。
更新
下面是我的xml文件以显示图表。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme"
tools:context="com.visualogyx.app.activity.SettingsActivity$PlaceholderFragment">
<RelativeLayout
android:id="@+id/linear_change_usage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/relative_text_dropdown_arraow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/light_grey">
<TextView
android:id="@+id/textview_usage_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="22dp"
android:layout_marginRight="22dp"
android:layout_marginTop="16dp"
android:text="Tasks"
android:textColor="@color/black"
android:textSize="17sp" />
<ImageView
android:id="@+id/dropdown_arraow"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_alignParentRight="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="20dp"
android:layout_marginTop="16dp"
android:src="@drawable/ic_arrow_drop_down_black_24dp" />
</RelativeLayout>
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/relative_text_dropdown_arraow" />
</RelativeLayout>
<ProgressBar
android:id="@+id/display_chart_progress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
</RelativeLayout>
问题 - 每当我填充图表时,图表图例会自动从底部裁剪。如果我把相同的传说放在中心,那么它工作正常,但问题只发生在底部。
答案 0 :(得分:3)
我通过在正常列表视图中添加标题来解决此问题
ListView list = (ListView) findViewById(R.id.list_chart);
list.setAdapter(new ChartTextLegendAdapter(this, values, colors));
并隐藏图例
中的标题这是我的布局XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="@color/background_color">
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart1"
android:layout_width="match_parent"
android:layout_height="300dp" />
<ListView
android:id="@+id/list_chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/chart1" />
</RelativeLayout>
并且不要忘记传递颜色的值和ArrayList
for (int c : ColorTemplate.PASTEL_COLORS)
colors.add(c);
for (int c : ColorTemplate.LIBERTY_COLORS)
colors.add(c);
for (int c : ColorTemplate.COLORFUL_COLORS)
colors.add(c);
for (int c : ColorTemplate.JOYFUL_COLORS)
colors.add(c);
for (int c : ColorTemplate.VORDIPLOM_COLORS)
colors.add(c);
colors.add(ColorTemplate.getHoloBlue());
values.DetailAmount = getIntent().getStringArrayListExtra("amount");
values.DetailId = getIntent().getIntegerArrayListExtra("id");
values.DetailName = getIntent().getStringArrayListExtra("names");
values.DetailEnglishName = getIntent().getStringArrayListExtra("enames");
month_name = getIntent().getStringExtra("month_name");
希望这也能解决你的问题。
答案 1 :(得分:1)
图表偏移很可能存在问题。试试这个,应该解决你的问题
pieChart.setExtraOffsets(0, 0, 0, 25);
此功能设置要附加到的附加偏移量(图表视图周围) 自动计算的偏移量。参数是(左,上,右,下)。 使用这些值来查看哪些偏移量适合您的需求。
答案 2 :(得分:1)
您是否尝试过使用xml属性android:translationY="-10dp"
进行自定义?
或view.setExtraOffsets(...);
您可以相应地管理dp
。
更新
l.setYOffset(10f);
答案 3 :(得分:0)
尝试将填充或边距设置为PieChart,或者可以在水平方向上对齐图例。