如何从Horizo​​ntalBarChart(MPAndroidChart)的所有边(包括顶部和底部)删除填充?

时间:2017-09-18 06:41:57

标签: android mpandroidchart

我正在尝试创建覆盖整个父布局的Horizo​​ntalBarChart(LinearLayout内的ConstraintLayout)。 这是我的代码:

public static HorizontalBarChart horizontalBarChartSet(Context context, HorizontalBarChart mChart, float value) {
    mChart.setDrawValueAboveBar(false);
    mChart.getDescription().setEnabled(false);
    mChart.setPinchZoom(false);
    mChart.setDrawGridBackground(false);

    //Vertical Axis
    mChart.getXAxis().setEnabled(false);

    //Horizontal Axis 1
    YAxis yl = mChart.getAxisLeft();
    yl.setDrawAxisLine(false);
    yl.setDrawGridLines(false);
    yl.setDrawLabels(false);
    yl.setAxisMinimum(0f);
    yl.setAxisMaximum(100f);

    //Horizontal Axis 2
    YAxis yr = mChart.getAxisRight();
    yr.setDrawAxisLine(false);
    yr.setDrawGridLines(false);
    yr.setDrawLabels(false);
    yr.setAxisMinimum(0f);
    yr.setAxisMaximum(100f);

    //Data
    ArrayList<BarEntry> values = new ArrayList<BarEntry>();
    values.add(new BarEntry(0, value));

    BarDataSet set = new BarDataSet(values, "");

    ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
    dataSets.add(set);

    BarData data = new BarData(dataSets);
    mChart.setData(data);

    //Highlight
    data.setHighlightEnabled(false);

    //Bar
    data.setBarWidth(0.8f);
    mChart.setFitBars(true);

    //Legend
    mChart.getLegend().setEnabled(false);

    //General
    mChart.setViewPortOffsets(0f,0f,0f,0f);
    mChart.setExtraOffsets(0f, 0f, 0f, 0f);

    //Animate
    mChart.animateY(2500);
    return mChart;
}

使用setViewPortOffsets(0f,0f,0f,0f);尽管从左侧和右侧删除填充但顶部和底部仍有一些填充,当我触摸条时,左右填充也会恢复为默认值。

视图的XML:

<android.support.constraint.ConstraintLayout
    android:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintVertical_bias="0.0">

        <com.github.mikephil.charting.charts.HorizontalBarChart
            android:id="@+id/percentage"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>
</android.support.constraint.ConstraintLayout>

以下是截图: 查看ListView的食物项目

Before I touch the bar

After I touch the bar

1 个答案:

答案 0 :(得分:0)

你可以试试吗

mChart.invalidate();

在数据中添加HorizontalBarChart后。