我有线性布局的视图。该应用程序是音乐符号,它是一系列音乐条,它们换行,所以它们总是小于屏幕的宽度(没有水平滚动)。当乐谱对于视图来说太大时,会有一个垂直滚动条。到现在为止还挺好。我可以向上和向下滚动。
现在我正在实现缩放缩放,我在ScaleGestureDetector中设置了onScale,保存了缩放因子,无效,在onDraw中我使用像canvas.scale这样的缩放因子(mScaleFactor,mScaleFactor);
它缩放视图确定除了它没有完全按我想要的那样做。我希望画布的绘图区域可以缩放,但滚动条保持原位,但缩放会将其发送到侧面,不在视野范围内。
任何想法如何缩放视图而不是滚动条?
顺便说一句,我可以通过将scalefactor应用到宽度来重新计算线条包裹音乐条的位置,这实际上只是滚动条显示的一个问题。
任何人都可以帮忙吗?感谢
答案 0 :(得分: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的实际显示长度,以便滚动条大小显示确定。
因为我引用了保存为全局变量的两个视图,所以它们很容易在必要时相互交谈。