2012-12-27 1 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); 

그리고 내 XML : 여기에 내 코드입니다. 내가 XML에서 할

<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)는 본질적으로 공유 공간에 위치한 위젯 모음입니다. 위치를 처리하는 실제 클래스는 LayoutManager입니다.

위치 지정 외에도 위젯 크기는 전체 플롯을 채우기 위해 조정해야합니다. 각 위젯은 SizeMetrics 인스턴스를 사용하여 자체 크기를 추적합니다. 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

Androidplot 0.6에서 위젯의 x/y 위치 지정을 위해 "LayoutManager [더 이상 사용되지 않습니다] (https://groups.google.com/d/msg/androidplot/941oGrWTi_I/OfTDVeoBl6cJ) 대신 각 위젯이 해당 위젯을 담당합니다 자신의 위치 지정 및 LayoutManager.position (...) 메소드를 이제 Widget.position (...) 메소드로 사용할 수 있습니다. " 그래서 해당 코드는'gw.position (0, XLayoutStyle.ABSOLUTE_FROM_LEFT, 0, YLayoutStyle.ABSOLUTE_FROM_TOP); ' – ehartwell

0

SizeMetrics 더 이상 설정하는 데 사용되지 않습니다를 크기 대신 Size는 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