Android EditText在ScrollView中被输入法遮挡

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

Android EditText在ScrollView中被输入法遮挡

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

    <activity
        android:name=".ui.product.EditProductActivity"
        android:configChanges="keyboard"
        android:screenOrientation="portrait"
        android: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中被输入法遮挡

上一篇:Android 输入法截取key优先于view


下一篇:Android输入法遮挡了输入框,使用android:fitsSystemWindows="true"后界面顶部出现白条解决方案