2013-07-16 30 views
1

我能夠在7英寸平板模擬器中藉助Dan開發條形圖,並使其適合於此屏幕,我使用setXAxisMax()setXAxisMin()。下面是圖I在該仿真器中獲得:AChartEngine條形圖的跨設備兼容性問題

AChartEngine bar graph

但是,當我安裝了我的手機,不同的屏幕,它是這樣的:

肖像

enter image description here

景觀

enter image description here

這是我的代碼:

........................ 
     XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 
     mRenderer.setChartTitle("Submission Statistics"); 
//  mRenderer.setXTitle("Verdict Code"); 
//  mRenderer.setYTitle("No. of Submissions"); 
     mRenderer.setAxesColor(Color.BLACK); 
     mRenderer.setApplyBackgroundColor(true); 
     mRenderer.setBackgroundColor(Color.WHITE); 
     mRenderer.setMarginsColor(Color.WHITE); 
     mRenderer.setZoomEnabled(true); 
//  mRenderer.setBarSpacing(-0.5); 
//  mRenderer.setMargins(new int[] {20, 30, 15, 0}); 
//  mRenderer.setShowLegend(false); 
     mRenderer.setAxisTitleTextSize(16); 
     mRenderer.setChartTitleTextSize(22); 
     mRenderer.setLabelsTextSize(15); 
     mRenderer.setLegendTextSize(15); 
     // mRenderer.addXTextLabel(1, "AC"); 
     // mRenderer.addXTextLabel(2, "PE"); 
     // mRenderer.addXTextLabel(3, "WA"); 
     // mRenderer.addXTextLabel(4, "TL"); 
     // mRenderer.addXTextLabel(5, "ML"); 
     // mRenderer.addXTextLabel(6, "CE"); 
     // mRenderer.addXTextLabel(7, "RE"); 
     // mRenderer.addXTextLabel(8, "OT"); 
     mRenderer.setBarWidth(80); 
     mRenderer.setXAxisMin(-6); 
     mRenderer.setXAxisMax(15); 
     mRenderer.setYAxisMax(311); 
     mRenderer.setYAxisMin(0); 
     mRenderer.setYLabelsAlign(Align.RIGHT); 
     mRenderer.setXLabelsColor(Color.BLACK); 
     mRenderer.setLabelsColor(Color.BLACK); 
     mRenderer.setYLabelsColor(0, Color.BLACK); 
     mRenderer.setXLabels(0); 
      mRenderer.setPanEnabled(true, false); 
........................ 

我現在添加mRenderer.setPanEnabled(true, false);,這樣我可以沿着僅移動x軸查看完整的圖。但用戶應該可以在屏幕上看到完整的圖表,而不管不同的設備。

如何使這個條形圖跨設備兼容,以便它不會在左側和右側切斷?

+1

我也對這個結果感興趣,我最近一直在使用ACE。我一直在做的一件事,不確定它是否會對你有所幫助,只是得到圖形視圖而不是意圖。這樣,您就可以獲得圖表,然後將其放入線性佈局中,您可以爲其保留空間並自動適應分配的空間。我只用10英寸平板電腦做過這個,但不知道它在不同尺寸下的工作性能如何。 – user2483079

+0

我也是通過圖形視圖來完成它,因爲我在片段中顯示它。嘗試使用不同的設備來確認,如果沒問題,請與我分享您的代碼:) –

+0

不幸的是,這是我擁有的唯一設備,因此我無法在較小的設備上進行測試。不可能真的對這些人說話,但也許這就是不同之處,試着用一個簡單的線性佈局設置一個測試項目,然後在活動中以編程方式添加條形圖的圖形視圖,以查看它是否按照你想要的方式工作它到 – user2483079

回答

2

setXAxisMin()setXAxisMax()調用設置圖形的比例,而不是圖形的大小。

嘗試減小傳遞給setBarWidth()的值。我預計圖的總寬度由num_bars * (X+Y)給出,其中X和Y被傳遞給(setBarWidth(X) + setBarSpacing(Y))。

我從來沒有用ACE構建過條形圖,但我認爲應該根據實際的窗口寬度和圖表中的條數來計算。希望有所幫助。

+0

我應該根據運行時計算出的設備寬度和高度來繪製圖表嗎? –

+0

是的,這基本上就是我的建議。或者將圖表放在滾動視圖中,以便用戶可以滾動它,但我不會「T認爲這是你正在尋找的東西。也可能是,如果你根本不調用setBarWidth(),那麼ACE會爲你計算正確的寬度,但是我沒有嘗試或讀取代碼來知道它是否確實如此。 –