千言万语不如一张图来的实在,问题如下GIF图所示[输入框被输入法挡住了]:
为了不让底部的按钮随着输入法一起起来,我把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();
}
}
运行效果(GIF)【完美解决】: