我想出了办法。我需要将滚动条的绘制与主乐谱视图的绘制分离。这样我就可以在不影响滚动条的情况下缩放主符号视图。
所以我使用线性布局来创建 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 的实际显示长度,以便滚动条大小显示正常。
因为我参考了保存为全局变量的两个视图,所以它们很容易在必要时相互交谈。