Android 为什么不能在自定义视图上重写getHeight()和getWidth()方法?

Android 为什么不能在自定义视图上重写getHeight()和getWidth()方法?,android,android-custom-view,Android,Android Custom View,我发现了一些类似的问题,但我认为它们并没有完全消除我的疑虑 我正在开发一个自定义视图,直接扩展view类。问题是,我正在创建一个视差视图,这意味着它会一直滑动,直到背景图像结束。话虽如此,我还是想重写View.getWidth方法,以便它返回位图的宽度 My View.onMeasure Override方法将测量的宽度设置为预期的背景位图宽度,该宽度应比实际显示宽。相反,对getWidth方法的调用返回设备显示宽度。这就是为什么我想重写View.getWidth方法,这是不可能的,因为它是最终

我发现了一些类似的问题,但我认为它们并没有完全消除我的疑虑

我正在开发一个自定义视图,直接扩展view类。问题是,我正在创建一个视差视图,这意味着它会一直滑动,直到背景图像结束。话虽如此,我还是想重写View.getWidth方法,以便它返回位图的宽度

My View.onMeasure Override方法将测量的宽度设置为预期的背景位图宽度,该宽度应比实际显示宽。相反,对getWidth方法的调用返回设备显示宽度。这就是为什么我想重写View.getWidth方法,这是不可能的,因为它是最终的方法


所以,我想知道的是,为什么他们这样做,不允许它重写这个方法,如果它被重写,会对视图层次结构产生什么影响

为什么View.onMeasure会将宽度测量为位图宽度?这样做的目的是什么?起初,我的第一个想法是滚动条需要这样做。但是我想让它不会与其他视图不一致,因为视图至少有位图宽度。但我不确定我的思路是否正确。这就是我在这里提问的原因。onMeasure返回视图的物理维度,而不是虚拟维度size@pskink我想这消除了我的疑虑,因为View.getWidth产生的最大宽度是实际设备的显示物理宽度(以像素为单位),因此没有必要重写该方法。