带有水平滚动的自定义视图

Customized View with Horizontal Scroll

我正在尝试编写一个具有水平滚动功能的自定义视图。我浏览了论坛上的许多帖子,但仍然无法得到我想要的。 我想要一个自定义视图,我正在其上绘制录音的音高轮廓。音高轮廓很长以适合屏幕。所以,我想为此添加一个水平滚动。 截至目前,我已经创建了一个扩展 HorizontalScrollView 的自定义视图。一旦 window 获得焦点,我就会 invalidate() 视图并在屏幕上绘制音高轮廓。完成绘图后,我尝试通过调用 scrollTo(getRight(), 0) 跳转到最右边的位置。这不会改变任何东西,轮廓是完全相同的位置。当我尝试使用 getRight() 打印值时,它给了我值 1794。我正在使用 Nexux 5 进行测试。任何人都可以给我任何提示吗?

PS:轮廓中最后一个值的 x 像素值为 Last value of x for is:5499.3

我犯的错误是没有在我的自定义 View 中提供 onMeasure() 的实现。如果自定义视图的 layout_width 被称为 wrap_content(在 HorizontalScrollView 的情况下),我们需要在 onMeasure() 内设置自定义视图的宽度。对此的一个很好的解释是 here。希望这对其他人有帮助。