2013-01-12 72 views
0

我有一個視圖線性佈局。該應用程序是音樂符號,它是一系列包含線條的音樂條,因此它們總是小於屏幕寬度(無水平滾動)。當音樂分數變得太大以至於視圖時,存在垂直滾動條。到現在爲止還挺好。我可以上下滾動。我在ScaleGestureDetector中設置了一個onScale,保存比例因子,使onDraw無效,並使用像這樣的比例因子canvas.scale(mScaleFactor,mScaleFactor);android捏縮放比例視圖滾動條移動

它縮放視圖確定,除非它不正是我想要的。我希望畫布的繪畫區域可以縮放,但滾動條會保持原位,但縮放會將其從視圖中移除。

任何想法如何縮放視圖,但不是滾動條?

順便說一句,我可以重新計算在哪裏行包裹我的音樂酒吧通過應用比例因子的寬度,它真的只是滾動條顯示的問題。

任何人都可以幫忙嗎?謝謝

+0

你看過[ScrollView](http://developer.android.com/reference/android/widget/ScrollView.html)嗎? – Veger

+0

我正在看。我只是將我的視圖更改爲滾動視圖,並且顯示看起來相同並且捏縮放工作。但是現在,當我在GestureDetector中獲得onScroll回調函數時,distanceY總是1.在View基類中,我得到了相應的拖拽量。無論如何,感謝您的提示,這可能會有所幫助。 – steveh

+0

實際上,當我把滾動條放回到右側,然後我放大,滾動條移出屏幕,所以我不確定ScrollView的優點是什麼,但它似乎沒有幫助我的問題。 – steveh

回答

0

我想通了。我需要從主音樂符號視圖的圖形中分離滾動條的圖形。這樣我可以放大主符號視圖而不影響滾動條。

所以我用線性佈局來創建2次 -

layout.setLayoutParams(new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT, 
        100)); 
      layout.setOrientation(LinearLayout.HORIZONTAL); 

      Globals.mMainView = new MainView(context); 
      Globals.mMainView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 60)); 
      layout.addView(Globals.mMainView); 

      Globals.mScrollbarView = new ScrollbarView(context); 
      Globals.mScrollbarView.setLayoutParams(new LinearLayout.LayoutParams(20, LinearLayout.LayoutParams.WRAP_CONTENT, 0)); 
      layout.addView(Globals.mScrollbarView); 

然後我刪除的MainView滾動條的顯示,並把它們在ScrollbarView。

然後我在ScrollbarView中使用onScroll事件來控制MainView中的滾動。我必須記得從ScrollbarView.computeVerticalScrollRange返回MainView的實際顯示長度,以便滾動條大小顯示正常。

因爲我參考了保存爲全局的兩個視圖,所以它們很容易在必要時相互交談。