2013-01-12 71 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的实际显示长度,以便滚动条大小显示正常。

因为我参考了保存为全局的两个视图,所以它们很容易在必要时相互交谈。