2011-07-21 162 views
1

我正在寫一個應用程序,它將創建一個圖並在SurfaceView上繪製它。最終,圖形需要能夠更新,但現在我希望SurfaceView能夠水平滾動,以便用戶可以看到所有數據。這可能嗎?SurfaceView水平滾動

+0

你不能把一個水平scrollView – Rasel

回答

2

中的gathertransparentRegion(Region region)您需要將您的自定義視圖作爲獨立類放在水平滾動視圖中。當您創建自定義圖表的instace查看您根據圖形的寬度就告訴尺寸本身通過重寫onMeasure方法:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);  

    this.setMeasuredDimension(graphWidth, graphHeight); 
} 

graphWidth = barLenghtInPixels * barCount + extraSpaceInPixels; 

您可以使用自定義標籤就像把你的customView在XML佈局<com.myApplication.GraphView...>或使用myScrollView.addView(myCustomView)並將其添加到HorizontalScrollView中,然後再撥打setContentView(myLayout)

+0

這正是我所期待的。謝謝! – user650309

+0

當我嘗試將自定義視圖置於水平滾動視圖中並運行應用程序時,adb告訴我這是由於空指針異常導致的。你有什麼想法,爲什麼? GraphView graphView; Horizo​​ntalScrollView myScrollView = new Horizo​​ntalScrollView(this); public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); graphView = new GraphView(this); myScrollView.addView(graphView); setContentView(myScrollView); } } – user650309

+0

您可以將一些代碼塊設置爲註釋以便找到哪個部件導致它 - 簡化代碼以查找錯誤。您需要將GraphView的代碼和您的活動粘貼到您的問題中,以便了解更多信息。 – Lumis