MpAndroidChart Piechart传说底部中心的切割问题

时间:2017-10-26 11:42:21

标签: android mpandroidchart

我附上了使用率表的屏幕截图。在红色框中显示图例,它们正在以饼图形式切割。 以下是我的代码:

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);

有谁知道答案?请帮我解决这个问题。谢谢提前。

enter image description here

更新

  

下面是我的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>
  

问题    - 每当我填充图表时,图表图例会自动从底部裁剪。如果我把相同的传说放在中心,那么它工作正常,但问题只发生在底部。

4 个答案:

答案 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,或者可以在水平方向上对齐图例。