我无法评论您的答案,但我想补充一些内容。
我了解你的困境以及为什么你链接的解决方案不是你情况下完整的解决方案(因为你无法滚动到视图底部)。我有一个类似的情况,即具有大型可滚动EditText框的情况。当软键盘弹出时,我不喜欢我的背景被挤压。
我尝试过你的解决方案,虽然乍一看似乎有效,但在某些情况下可能不是理想的:
1.如果您允许应用程序使用横向模式,则背景将不会调整/拉伸。
2.如果您在具有较大屏幕或dpi的设备上运行应用程序,则您的背景可能无法填充屏幕。
基本上,当你将'scaleType'设置为'matrix'时,你告诉Android以1:1的比例绘制背景而不进行缩放。所以当你使用你的解决方案打开软键盘时,你的'scrollView'和'imageView'都像往常一样被重新调整大小,但你设置的图像源保持1:1,因此继续显示相同的区域。
所以,例如,如果您的背景图像设置为特定大小(例如480 x 800),并且它完美地填充了您的Nexus One,那么当您旋转到横向时,右侧将会有一个黑色区域。
当然,如果您的背景仅是重复的图案,则无关紧要,在这种情况下,您可以使其非常大,并希望弥补各种屏幕(甚至可能是平板电脑)。
或者,您还可以为不同的屏幕大小/密度/方向提供不同的背景,但这仍然不能解决缩放问题。
在试图解决这个问题的徒劳努力中,我偶然发现了一个名为
android:isScrollContainer
的
View
属性。此属性告诉某些视图是否允许在显示软键盘时调整大小。这也被您链接的解决方案中的某人提到。我尝试在包含我的背景的
ViewGroup
上设置它(为false),但任何滚动的子元素似乎都会覆盖它,导致再次挤压。
就目前而言,我认为我们的情况还没有完整的解决方案。你的方法在某些情况下确实有效,我感谢你的努力。希望谷歌未来能提供一个解决方案,但我不认为他们会把这视为一个问题/优先事项。