2014-09-11 87 views
0

如果我使用Androidplot繪製條形圖,然後將手機方向從縱向更改爲橫向,則所有圖表信息都會消失。 (鏈接到屏幕截圖)。Androidplot - 未顯示在橫向

景觀---沒有圖表數據

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

肖像---圖表數據

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

一些經過試用和錯誤我發現,如果我的圖表的寬度設置爲設備屏幕寬度爲0.96所有圖表信息再次出現。

如何讓Androidplot在橫向佔用100%的設備屏幕寬度?

我創建圖表的代碼可以在Androidplot - X-Axis labels cut off

+0

如果你運行在上面的實驗,會發生什麼[中的demoApp的(https://play.google .com/store/apps/details?id = com.androidplot.demos&hl = en)條形圖活動?它是否表現出相同的行爲?它正在使用我的設備。 – Nick 2014-09-11 14:08:44

+0

不,圖表以橫向模式顯示。如果您在http://stackoverflow.com/q/25780552/816754上運行我的代碼,會發生什麼情況會顯示不正確的行爲? – Mark 2014-09-12 02:31:21

+0

@Mark在這兩種模式下都會出現,但在人像模式下會縮小。 – keshav 2014-09-16 06:31:13

回答

0

發現做這樣的事情

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; 

    }