带有水平滚动的自定义视图
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。希望这对其他人有帮助。
我正在尝试编写一个具有水平滚动功能的自定义视图。我浏览了论坛上的许多帖子,但仍然无法得到我想要的。
我想要一个自定义视图,我正在其上绘制录音的音高轮廓。音高轮廓很长以适合屏幕。所以,我想为此添加一个水平滚动。
截至目前,我已经创建了一个扩展 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。希望这对其他人有帮助。