Как удалить отступы из горизонтальной гистограммы mpandroidchart?

Я пытаюсь сделать горизонтальную гистограмму, охватывающую весь родительский макет, но это не так. Ниже мой код -

HorizontalBarChart barchart = new HorizontalBarChart(activity);
barchart.setLayoutParams(new LinearLayout.LayoutParams(0, 110, weight));

ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
entries.add(new BarEntry(86.0f, 0));

BarDataSet dataset = new BarDataSet(entries, "");
dataset.setColor(Color.parseColor("#E0E0E0"));

ArrayList<String> labels = new ArrayList<String>();
labels.add("86.0"); 

BarData bardata = new BarData(labels, dataset);
barchart.setData(bardata);
barchart.setDescription("");

Legend legend = barchart.getLegend();
legend.setEnabled(false);

YAxis topAxis = barchart.getAxisLeft();
topAxis.setDrawLabels(false);

YAxis bottomAxis = barchart.getAxisRight();
bottomAxis.setDrawLabels(false);

XAxis rightAxis = barchart.getXAxis();
rightAxis.setDrawLabels(false);
bottomAxis.setDrawLabels(false);

barchart.setPadding(-1, -1, -1, -1);
barchart.setBackgroundColor(Color.CYAN);

return barchart;

Я хочу, чтобы моя горизонтальная гистограмма (гистограмма) заполнила всю синюю область. Может кто-нибудь, пожалуйста, помогите.

РЕДАКТИРОВАТЬ: @PhilippJahoda Я попробовал ваше решение, но при первом запуске оно отображается так же, как и было, когда я нажимаю / касаюсь диаграммы, она покрывает только всю область. Скажите, пожалуйста, почему мне нужно прикоснуться к диаграмме, чтобы она заполнила все пространство?

При первом запуске выглядит так -

Снимок экрана: введите здесь описание изображения

После нажатия это выглядит так -

Скриншот 2: введите здесь описание изображения


person Agr1909    schedule 23.04.2015    source источник


Ответы (4)


Обновите библиотеку до последней версии, если вы еще этого не сделали. Затем просто удалите все смещения с диаграммы. Он находится в документации.

Вызов:

chart.setViewPortOffsets(0f, 0f, 0f, 0f);
person Philipp Jahoda    schedule 23.04.2015
comment
Такая же проблема у меня. Я вызываю chart.setViewPortOffset(100f, 0f, 100f, 0f) после установки данных диаграммы... но мое редактирование вступает в силу только после нажатия на диаграмму. Любое решение @PhilippJahoda? У меня последняя версия библиотеки mpchart. - person andrea.rinaldi; 21.09.2015
comment
Нет метода setViewPortOffsets для круговой диаграммы - person SANAT; 14.09.2016
comment
@SANAT попробуйте использовать setExtraOffsets с отрицательными значениями - person Daivid; 08.10.2016
comment
По какой-то причине setViewPortOffsets(0f, 0f, 0f, 0f) не работает в API‹24 - person nnyerges; 14.12.2019
comment
setViewPortOffsets(0f, 0f, 0f, 0f) хорошо работает только тогда, когда все нули. Если вы попробуете что-то вроде setViewPortOffsets(0f, 0f, 0f, 10f), это не сработает до взаимодействия с диаграммой. Даже если вы вызываете invalidate(). - person Slobodan Antonijević; 30.07.2020

Удаление отступов работает с

chart.setViewPortOffsets(0f, 0f, 0f, 0f);

но если эффект появляется только после прикосновения, попробуйте сделать представление диаграммы недействительным (после того, как вы установите данные) следующим образом:

post(new Runnable() {
    @Override
    public void run() {
        chartView.invalidate();
    }
});
person Nik Kober    schedule 31.01.2016

Лучший способ контролировать заполнение, что я чувствую, так это:

  1. Установите все смещения на 0

    chart.setViewPortOffsets(0f, 0f, 0f, 0f);

  2. Управляйте отступами из XML

    com.github.mikephil.charting.charts.LineChart android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="500dp" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:layout_marginBottom="10dp"

person Amit    schedule 27.04.2017

Когда вы сначала устанавливаете свои ViePortOffsets и после этого перемещаете ViewTo, это работает.

Graph.setViewPortOffsets(0F,0F,0F,0F)
Graph.moveViewTo(0f,0f,YAxis.AxisDependency.RIGHT)
Graph.invalidate()
person Stefan Onsori    schedule 24.04.2021