2012-12-27 10 views
5

मुझे एक एप्लिकेशन में androidPlot का उपयोग करके एक न्यूनतम चार्ट मिला है, और बाहरी दृश्य तत्वों को हटाने की कोशिश कर रहा है। मुझे सबकुछ मिल गया है, सिवाय इसके कि मैं चार्ट के चारों ओर कुछ खाली रिक्त स्थान से छुटकारा नहीं पा सकता हूं। यहाँ मार्कअप के साथ की तरह चालू क्या यह लग रहा है, बस एक गतिविधि रूट दृश्य में बैठे है:AndroidPlot में किसी चार्ट के आस-पास की सभी जगहों को मैं कैसे हटाऊं?

What my chart looks like

मैं भीतरी चार्ट सीमाओं और बाहरी दृश्य सीमा के बीच काले अंतरिक्ष कैसे समाप्त कर सकते हैं?

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); 

और मेरे एक्सएमएल: यहाँ मेरी कोड है।

<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" /> 

कुछ भी नहीं है मैं एक्सएमएल में क्या आंतरिक सीमा को प्रभावित करने, संलग्न लेआउट गुरुत्वाकर्षण बदलना भी शामिल लगता है: सही मार्जिन छोड़ दिया अंतरिक्ष जो मैं से छुटकारा पाने के लिए चाहते हैं ऑफसेट करने के लिए है। मैं भी इन की कोशिश की है, कोई प्रभाव नहीं करने के लिए:

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)); 

क्या मैं वह सब काला अंतरिक्ष से छुटकारा पाने के लिए क्या करना होगा?

उत्तर

7

प्लॉट स्वयं (आपके उदाहरण में mDynamicPlot) अनिवार्य रूप से साझा स्थान में स्थित विजेटों का संग्रह है। स्थिति को संभालने वाली वास्तविक कक्षा लेआउटमैनेजर है।

स्थिति के अलावा, विजेट के आकार को पूरे प्लॉट को भरने के लिए समायोजित करने की भी आवश्यकता होगी। प्रत्येक विजेट आकारमैट्रिक्स के उदाहरण का उपयोग करके अपने आकार का ट्रैक रखता है। आप setSize (SizeMetrics newInstance) का आह्वान करके किसी भी विजेट के आकार को संशोधित कर सकते हैं; "चार्ट" क्षेत्र जिसमें आप रुचि रखते हैं XYGraphWidget के अनुरूप है।  

मैं व्यक्तिगत रूप से इस परीक्षण नहीं किया है, लेकिन मेरा मानना ​​है कि नीचे कोड आप क्या चाहते हैं करना चाहिए:

// XYGraphWidget करने के लिए एक संभाल पाने:

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

एक आकर्षण की तरह काम करता है, धन्यवाद! –

+1

मैं इस '' lm.position' विधि को कैसे कॉल कर सकता हूं? –

+5

एंड्रॉइडप्लॉट 0.6 में, "लेआउटमैनेजर [अब उपयोग नहीं किया गया है] (https://groups.google.com/d/msg/androidplot/941oGrWTi_I/OfTDVeoBl6cJ) विजेट्स की x/y स्थिति के लिए; इसके बजाय प्रत्येक विजेट इसके लिए ज़िम्मेदार है अपनी स्थिति और इस प्रकार LayoutManager.position (...) विधियां अब Widget.position (...) विधियों के रूप में उपलब्ध हैं "। तो संबंधित कोड 'gw.position (0, XLayoutStyle.ABSOLUTE_FROM_LEFT, 0, YLayoutStyle.ABSOLUTE_FROM_TOP) होना चाहिए;' – ehartwell

0

SizeMetrics अब स्थापित करने के लिए प्रयोग किया जाता है आकार, इसके बजाए आकार का उपयोग उसी निर्माता के साथ साइजमैट्रिक्स के रूप में किया जाता है और इसका उपयोग करने के लिए भी किया जाता है। नया कॉल इस तरह दिखता है।

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 क्या यह समाधान अभी भी काम करता है? – Franzi

संबंधित मुद्दे

 संबंधित मुद्दे