Android EditText 在 ScrollView 中被输入法遮挡

千言万语不如一张图来的实在,问题如下GIF图所示[输入框被输入法挡住了]:

Android EditText 在 ScrollView 中被输入法遮挡_第1张图片

为了不让底部的按钮随着输入法一起起来,我把windowSoftInputMode设置为adjustPan。

    

但是这个时候出现了这个问题,屏幕下面部分的输入框点击,输入法弹起来,但是输入框却被遮住了。
当我把windowSoftInputMode设置为adjustResize,这个问题可以解决,但是底部的Button按钮就出现在输入法的底部,不符合我们想要的。 设置adjustResize|adjustPan也还是没用。

需要解决的问题:当输入法显示的时候,底部的Button按钮不能在输入法的顶部;并且屏幕下面部分的输入框【EditText】不能被输入法挡住。

通过上面GIF可以看出,第一次点击的时候,输入框不会被挡住,但是当用户按返回键,再次点击该输入框,输入框就被挡住了。

细心的读者可能发现,当第一次点击 库存 输入框,不会出现遮挡的情况,但是再次点击该输入框就有问题了,当点击其他输入框,然后在点击 库存 输入框又没有问题了。

从上可以得出,如果控件得到了焦点,关闭输入法,然后再次点击该输入框就会出现遮挡用户无法输入的问题。

那么我们就可以当用户隐藏输入法的时候【如何监听输入法隐藏】,去掉输入法的焦点。

@Override
public void back(TextView textView) {
    if (textView == clickEditText) {
        textView.clearFocus();
    }
}

back(TextView textView)方法

运行效果(GIF)【完美解决】:
Android EditText 在 ScrollView 中被输入法遮挡_第2张图片


如果你觉得本文帮助到你,给我个关注和赞呗!

另外,我为 Android 程序员编写了一份:超详细的 Android 程序员所需要的技术栈思维导图

如果有需要可以移步我的 GitHub -> AndroidAll,里面包含了最全的目录和对应知识点链接,帮你扫除 Android 知识点盲区。 由于篇幅原因只展示了 Android 思维导图:
超详细的Android技术栈

你可能感兴趣的:(Android)