我正在尝试编写一个具有水平滚动功能的自定义 View 。我浏览了论坛上的许多帖子,但仍然无法得到我想要的。
我想要一个自定义 View ,我正在其上绘制录音的音高轮廓。音高轮廓很长以适合屏幕。所以,我想为此添加一个水平滚动。
截至目前,我已经创建了一个扩展 HorizontalScrollView
的自定义 View 。一旦窗口获得焦点,我就invalidate()
View 并在屏幕上绘制音调轮廓。完成绘图后,我尝试通过调用 scrollTo(getRight(), 0)
跳到最右边的位置。这不会改变任何东西,轮廓是完全相同的位置。当我尝试使用 getRight()
打印值时,它给了我值 1794
。我正在使用 Nexux 5 进行测试。谁能给我任何提示?
PS:轮廓中最后一个值的 x 像素值为 Last value of x for is:5499.3
。
最佳答案
我犯的错误是没有在我的自定义 View
中提供 onMeasure()
的实现。如果自定义 View 具有 layout_width
提到的 wrap_content
(在 HorizontalScrollView
的情况下),我们需要在内部设置自定义 View 的宽度onMeasure()
。一个很好的解释是 here .希望这对其他人有帮助。
关于android - 带有水平滚动的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050720/