我正在尝试编写一个具有水平滚动功能的自定义视图。我在论坛上经历过很多帖子,但我仍然无法得到我想要的东西。
我想要一个自定义视图,我正在绘制音频录制的音高轮廓。音高轮廓很长,适合屏幕。所以,我想为此添加一个水平滚动。
截至目前,我已经创建了一个扩展HorizontalScrollView
的自定义视图。一旦窗口具有焦点,我invalidate()
视图并在屏幕上绘制音高轮廓。完成绘图后,我尝试通过调用scrollTo(getRight(), 0)
跳到最右边的位置。这不会改变任何东西,轮廓是完全相同的位置。当我尝试使用getRight()
打印值时,它会为我提供值1794
。我正在使用Nexux 5进行测试。任何人都可以给我任何暗示吗?
PS:轮廓中最后一个值的x像素值为Last value of x for is:5499.3
。
答案 0 :(得分:1)
我所犯的错误不是在我的自定义onMeasure()
中为View
提供实施。如果自定义视图将layout_width
提及为wrap_content
(如果是HorizontalScrollView
),则需要在onMeasure()
内设置自定义视图的宽度。同样的一个很好的解释是here。希望这对其他人有帮助。