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

Я отображаю данные из вызова API, используя HorizontalBarChart, При первом запуске вызова диаграмма исчезает с экрана при отображении:

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

Когда мое приложение получает успешный сетевой ответ, выполняется следующий код (вспомогательные методы не отображаются):

public void displayBarChart() {
    barChart.setData(getBarData());
    barChart.setTouchEnabled(false);
    barChart.setFitBars(true);
    barChart.getLegend().setEnabled(false);
    barChart.getDescription().setEnabled(false);

    configureXAxis();
    configureYAxis();

    barChart.invalidate(); // refresh
}

Код макета для barChart является:

<com.github.mikephil.charting.charts.HorizontalBarChart
            android:id="@+id/bar_chart"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_marginBottom="8dp" />

barChart вложен в LinearLayout это само по себе внутри ScrollView, Все эти взгляды имеют layout_width="match_parent",

Есть идеи, что здесь происходит? Кажется, что для первого звонка как-то barChart не имеет правильного понимания требуемой ширины, но последующие вызовы сбрасывают его. Спасибо!

Обновить:

После некоторых экспериментов я решил, что мне нужно выполнить setData() после звонка configureXAxis(), который определяется как

private void configureXAxis() {
    final XAxis xAxis = barChart.getXAxis();

    xAxis.setDrawAxisLine(false); // no axis line
    xAxis.setDrawGridLines(false); // no grid lines
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setLabelCount(2);
    xAxis.setTextSize(16f);

    xAxis.setValueFormatter(new IAxisValueFormatter() {
        @Override
        public String getFormattedValue(final float value, final AxisBase axis) {
            return labels.get((int) value);
        }
    });
}

Кто-нибудь знает, почему это изменение порядка важно для правильного отображения гистограммы?

0 ответов

Другие вопросы по тегам