我有一个线性布局的视图。这个应用程序是音乐符号,这是一系列的音乐条,换行,所以他们总是小于屏幕的宽度(没有水平滚动)。当乐谱变得太大而无法显示时,会有一个垂直滚动条。到目前一切尚好。我可以很好地上下滚动。
现在我正在实现收缩缩放,我在ScaleGestureDetector中设置了一个onScale,保存比例因子,使其无效,并在onDraw中使用比例因子,像这样的canvas.scale(mScaleFactor,mScaleFactor);
它可以缩放视图,但它并不完全符合我的要求。我想让画布的绘图区域像它一样缩放,但滚动条留在原地,但缩放会把它移到一边,看不见。
你知道如何缩放视图而不是滚动条吗?
顺便说一句,我可以通过将比例因子应用于宽度来重新计算音乐条的换行位置,这真的只是滚动条显示的问题。
有人能帮上忙吗?谢谢
发布于 2013-01-13 10:58:14
我想通了路。我需要将滚动条的绘制与主音乐符号视图的绘制解耦。这样我就可以在不影响滚动条的情况下缩放主符号视图。
所以我使用线性布局来创建两个视图-
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的实际显示长度,这样滚动条大小才能正常显示。
由于我引用了保存为全局变量的两个视图,因此它们很容易在必要时相互通信。
https://stackoverflow.com/questions/14291942
复制相似问题