Androidplot - не отображается в альбомной ориентации

Если я построю гистограмму с помощью Androidplot, а затем изменю ориентацию своего телефона с книжной на альбомную, вся информация о диаграмме исчезнет. (ссылка на скриншоты).

Альбомная --- нет данных диаграммы

https://drive.google.com/file/d/0B4CxFPSILEYpSXV1VnZFVFUtWGc/edit?usp=sharing

Портрет --- данные диаграммы

https://drive.google.com/file/d/0B4CxFPSILEYpdGZCMm8xdGZHTlk/edit?usp=sharing

После некоторых проб и ошибок я обнаружил, что если установить ширину диаграммы равной 0,96 ширины экрана устройства, вся информация о диаграмме появится снова.

Как я могу заставить Androidplot занимать 100% ширины экрана устройства в альбомной ориентации?

Мой код для создания диаграммы можно найти по адресу Androidplot — метки оси X обрезаны


person Mark    schedule 11.09.2014    source источник
comment
Что произойдет, если вы запустите вышеуказанный эксперимент на демонстрационного приложения активность гистограммы? Проявляет ли он такое же поведение? На моем устройстве работает.   -  person Nick    schedule 11.09.2014
comment
Нет, диаграмма отображается в ландшафтном режиме. Что произойдет, если вы запустите мой код на странице stackoverflow.com/q/25780552/816754?   -  person Mark    schedule 12.09.2014
comment
@Mark Здесь он появляется в обоих режимах. Но в портретном режиме он уменьшается.   -  person keshav    schedule 16.09.2014


Ответы (1)


Сделайте что-нибудь вроде этого

 private View createBarGraph()
    {
        // initialize our XYPlot reference:
        XYPlot plot = (XYPlot) this.findViewById(R.id.mySimpleXYPlot1);

        // Create a couple arrays of y-values to plot:
        Number[] series1Numbers = GenerateGraphValues();

        // Turn the above arrays into XYSeries':
        XYSeries series1 = new SimpleXYSeries(Arrays.asList(series1Numbers), 
        SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, // Y_VALS_ONLY means use the
                                                                                                // element index as the x value
                "Series1"); // Set the display title of the series

        BarFormatter series1Format = new BarFormatter(Color.rgb(51, 181, 229), Color.TRANSPARENT);
        PointLabelFormatter plf = new PointLabelFormatter();
        plf.getTextPaint().setTextSize(18);
        plf.getTextPaint().setColor(Color.BLACK);
        series1Format.setPointLabelFormatter(plf);

        series1Format.setPointLabeler(new PointLabeler(){
            DecimalFormat df = new DecimalFormat("##0.00");

            public String getLabel(XYSeries series, int index)
            {

                // need to check for null
                if(series.getY(index) == null) return "";

                return df.format(series.getY(index));
            }
        });

        // add a new series' to the xyplot:
        plot.addSeries(series1, series1Format);

        // Y axis config
        plot.setRangeLabel("Values"); // label
        plot.setRangeBoundaries(0, 110, BoundaryMode.FIXED); // scale
        plot.setRangeStep(XYStepMode.INCREMENT_BY_VAL, 10); // steps
        plot.getGraphWidget().getRangeLabelPaint().setTextSize(26); // font size
        DecimalFormat nf = new DecimalFormat("#0");
        plot.setRangeValueFormat(nf);

        // X Axs config
        plot.setDomainLabel("Indexes");
        plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);
         plot.getGraphWidget().setDomainValueFormat(new DecimalFormat("0"));
        plot.getGraphWidget().getDomainLabelPaint().setTextSize(18);
        plot.getGraphWidget().setMarginTop(20);
        plot.getGraphWidget().setMarginBottom(15);
        plot.getGraphWidget().setMarginLeft(15);
        plot.getGraphWidget().setMarginRight(15);
//      plot.getLegendWidget().setHeight(14);
        plot.getGraphWidget().setGridPaddingLeft(15);
        plot.getGraphWidget().setGridPaddingRight(15);
//      plot.getGraphWidget().setGridPaddingBottom(20);
        // other config
        plot.getLegendWidget().setVisible(false); // hide legend
        plot.getGraphWidget().getDomainGridLinePaint().setColor(Color.TRANSPARENT); // hide
                                                                                                                                                                // grid
                                                                                                                                                                // lines
        plot.getGraphWidget().getRangeGridLinePaint().setColor(Color.TRANSPARENT); // hide
                                                                                                                                                                // grid
                                                                                                                                                                // lines
//      plot.getGraphWidget().setGridPaddingLeft(40); // give some padding
//      plot.getGraphWidget().setGridPaddingRight(40); // give some padding
        plot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); // background
                                                                                                                                                    // color
//      plot.getTitleWidget().setPaddingTop(10); // give some padding

        // set bar width
        BarRenderer<?> renderer = (BarRenderer<?>) plot.getRenderer(BarRenderer.class);
        renderer.setBarWidth(20);
        return plot;

    }
person keshav    schedule 16.09.2014