Java 键盘正上方的Android视图布局

Java 键盘正上方的Android视图布局,java,android,Java,Android,为了解决这个问题,我已经读了很多书,但是我还没有找到一个很好的解决方案,所以现在开始 我想做的是:我想用EditText、TextView和ListView创建一个垂直线性布局。我希望布局的安排方式能够使EditText聚焦时,TextView与键盘顶部齐平,键盘隐藏底部的ListView。然后,当隐藏键盘时,再次显示ListView 到目前为止我所拥有的(目前正在工作,但这是一个可怕的丑陋的黑客)。我实现了这里显示的方法:检测何时显示键盘以及可视区域的剩余大小。然后,我计算键盘上方所有固定大小

为了解决这个问题,我已经读了很多书,但是我还没有找到一个很好的解决方案,所以现在开始

我想做的是:我想用EditText、TextView和ListView创建一个垂直线性布局。我希望布局的安排方式能够使EditText聚焦时,TextView与键盘顶部齐平,键盘隐藏底部的ListView。然后,当隐藏键盘时,再次显示ListView

到目前为止我所拥有的(目前正在工作,但这是一个可怕的丑陋的黑客)。我实现了这里显示的方法:检测何时显示键盘以及可视区域的剩余大小。然后,我计算键盘上方所有固定大小元素的大小(ActionBar、TextView和随机图像视图)。然后从我可用的总面积中减去它,然后我将EditText设置为剩余面积的大小

这样,由于EditText直接位于TextView上方,它会将TextView推到键盘上方的正确高度,并为所有内容留出足够的空间

现在,这显然让我非常不舒服,因为我肯定会遇到一个屏幕很小的用户,不知怎的打破了这个丑陋的黑客;然而,我还没有找到更好的方法来解决这个问题。有人对如何做有什么建议吗

我尝试的另一个解决方案是,在显示软键盘时将活动设置为adjustResize,然后隐藏我的ListView。然而,由于显示/不显示键盘的时间延迟,这看起来非常容易出错


编辑:我添加了一个像素精确的表示我要查找的内容。

没有其他方法,因为软键盘不提供有关其状态的事件。小屏幕不应该是一个问题,只要你施加一些限制(如最低高度)。