2012-12-27 25 views
5

Bir uygulamada androidPlot kullanarak minimalist bir grafiğim var ve gereksiz görsel öğeleri kaldırmaya çalışıyordum. Herşeyi yaptım, ancak haritanın etrafındaki boş alanlardan kurtulmak imkansız. İşte işaretleme açık olduğu gibi sadece bir Faaliyet kök görünümünde oturan görünüyor:AndroidPlot'taki grafikteki tüm alanları nasıl temizlerim?

What my chart looks like

nasıl iç grafik sınırları ve dış görünümü sınırı arasındaki siyah boşluk ortadan kaldırabilir?

mDynamicPlot = (XYPlot) findViewById(R.id.dynamicPlot); 
    mDynamicPlot.getGraphWidget().setDomainValueFormat(new DecimalFormat("0")); 
    mDynamicPlot.addSeries(mCpuData, new LineAndPointFormatter(Color.rgb(51, 204, 255), null, Color.rgb(8, 153, 194))); 
    mDynamicPlot.setDomainStepMode(XYStepMode.INCREMENT_BY_VAL); 
    mDynamicPlot.setRangeBoundaries(0, 100, BoundaryMode.FIXED); 
    mDynamicPlot.setDomainStepValue(10); 
    mDynamicPlot.setRangeStepValue(5.0d); 
    mDynamicPlot.setRangeValueFormat(new DecimalFormat("#")); 

    mDynamicPlot.setTicksPerDomainLabel(Integer.MAX_VALUE); 
    mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getLegendWidget()); 
    mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getRangeLabelWidget()); 
    mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getDomainLabelWidget()); 
    mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getTitleWidget()); 

    mDynamicPlot.getGraphWidget().setMarginTop(10);   

    mDynamicPlot.setBackgroundPaint(null); 
    mDynamicPlot.getGraphWidget().setBackgroundPaint(null); 
    mDynamicPlot.getGraphWidget().setGridBackgroundPaint(null); 

    mDynamicPlot.getGraphWidget().setDomainLabelPaint(null); 
    mDynamicPlot.getGraphWidget().setDomainOriginLabelPaint(null); 

    mDynamicPlot.getGraphWidget().setGridLinePaint(null); 
    mDynamicPlot.getGraphWidget().setDomainOriginLinePaint(null); 
    mDynamicPlot.getGraphWidget().setRangeOriginLinePaint(null); 

    mDynamicPlot.setDrawBorderEnabled(false); 

Ve XML: İşte benim kod. Ben XML do

<com.androidplot.xy.XYPlot 
    android:id="@+id/dynamicPlot" 
    android:layout_width="fill_parent" 
    android:layout_height="150dp" 
    android:layout_marginTop="16dp" 
    android:layout_marginRight="10dp" 
    title="Dynamic Plot" /> 

Hiçbir şey kapsayan düzen yerçekimi değiştirilmesi de dahil olmak iç sınırları etkileyecek gibi görünüyor: sağ kenar ı kurtulmak isteyen sol boşluk ofset etmektir. Ben de hiçbir etkisi nedeniyle, bu denedi: Bütün bunları siyah boşluk kurtulmak için yapmanız gereken ne yapıyoruz

mDynamicPlot.getRangeLabelWidget().setHeight(0); 
    mDynamicPlot.getRangeLabelWidget().setPadding(0, 0, 0, 0); 
    mDynamicPlot.getRangeLabelWidget().setMargins(0, 0, 0, 0); 

    mDynamicPlot.getLegendWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE)); 
    mDynamicPlot.getRangeLabelWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE)); 
    mDynamicPlot.getDomainLabelWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE)); 

?

cevap

7

Çizelgenin kendisi (örneğinizde mDynamicPlot) esas olarak, paylaşılan bir alanda konumlandırılmış bir widget koleksiyonudur. Konumlandırmayı işleyen asıl sınıf LayoutManager'tır. Konumlandırmaya ek olarak, Widget'ın büyüklüğünün, tüm Çizelgeyi dolduracak şekilde ayarlanması da gerekecektir. Her Widget, bir SizeMetrics örneğini kullanarak kendi boyutunu izler. SetSize'i (SizeMetrics newInstance) çağırarak herhangi bir Widget'ın boyutunu değiştirebilirsiniz; İlgilendiğiniz "grafik" alanı XYGraphWidget'e karşılık gelir.  

Ben şahsen bu test değil ama aşağıda kod istediğini yapması gerektiğini inanıyoruz:

// XYGraphWidget için ele almak:

Widget gw = mDynamicPlot.getGraphWidget(); 

// FILL mode with values of 0 means fill 100% of container: 
SizeMetrics sm = new SizeMetrics(0,SizeLayoutType.FILL, 
           0,SizeLayoutType.FILL)); 
gw.setSize(sm); 

// get a handle to the layout manager: 
LayoutManager lm = mDynamicPlot.getLayoutManager(); 

// position the upper left corner of gw in the upper left corner of the space 
// controlled by lm. 
lm.position(gw, 0, XLayoutStyle.ABSOLUTE_FROM_LEFT, 
      0, YLayoutStyle.ABSOLUTE_FROM_TOP); 
+0

Bir çekicilik gibi çalışır, teşekkürler! –

+1

Bu '' lm.pozition' yöntemini nasıl çağırabilirim? –

+5

Androidplot 0.6'da, "Widget'ların x/y konumlandırması için" LayoutManager [artık kullanılmamaktadır] (https://groups.google.com/d/msg/androidplot/941oGrWTi_I/OfTDVeoBl6cJ), bunun yerine her bir Widget kendi kendi konumlandırması ve dolayısıyla LayoutManager.pozisyon (...) yöntemleri artık Widget.position (...) yöntemleri olarak kullanılabilir. Yani ilgili kod gw.position (0, XLayoutStyle.ABSOLUTE_FROM_LEFT, 0, YLayoutStyle.ABSOLUTE_FROM_TOP) olmalıdır; ' – ehartwell

0

SizeMetrics hiçbir uzun ayarlamak için kullanılır Boyut yerine, Size SizeMetrics ve aynı şekilde kullanmak aynı Oluşturucu ile kullanılır. yeni Çağrı buna benzer.

Widget gw = mPlot.getGraph();  
Size size = new Size(0,SizeMode.FILL,0,SizeMode.FILL);  
gw.setSize(size); 
gw.position(0, HorizontalPositioning.ABSOLUTE_FROM_LEFT,0, VerticalPositioning.ABSOLUTE_FROM_TOP); 
+0

@Nick Bu Çözüm hala çalışıyor mu? – Franzi

İlgili konular