如何将标准滚动条添加到 SurfaceView?

How do I add standard scroll bars to a SurfaceView?

我得到了一个 SurfaceView,其中我显示了一个比 SurfaceView 的实际面积大得多的位图,所以我实现了一种方法,让用户可以在位图上滑动手指并上下移动它.这样做时,我希望能够显示垂直滚动条,最好是标准的 Android 滚动条,而不是绘制一些自定义的东西。

问题是,我希望我的 SurfaceView 保持屏幕大小,也就是说我不想滚动 SurfaceView 本身,我只是想营造一种用户正在滚动内容的错觉,因此显示滚动条。

我尝试在布局的 XML 中设置 android:scrollbars = "vertical",我尝试 mSurfaceView.setVerticalScrollBarEnabled(true);我试过 awakenScrollBars();每当用户触摸 SurfaceView 时,但是其中 none 会显示滚动条。

那么,是否可以在 SurfaceView 上显示标准 Android 滚动条?

简短的回答是:不!

SurfaceView 在屏幕上绘制的所有内容都是您直接调用使用您知道的整个 lockCanvasunlockCanvasAndPost 绘制的内容。

将这些参数放在 XML 中使您可以通过构造函数中的 AttributeSet 在 Java 中读取它们,但这仅用于配置,不会随便画。