Android webview 键盘覆盖输入

问题描述 投票:0回答:4

我的android应用程序想要的效果是有一个带有输入框和内容的webview。 当用户点击键盘时,键盘会将输入框向上推,但不会调整主要内容的大小,只是覆盖在其上面,如下图所示。

enter image description here

我遇到的问题是键盘盖住了输入框,并没有将其向上推。

目前这是一个 cordova android 应用程序。 在清单中,我已经配置了

 <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleInstance" android:name="GigJam" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustPan">

也在 config.xml 中:

   <preference name="Fullscreen" value="false" />

我使用 android:windowSoftInputMode="adjustPan" 来防止屏幕调整大小,这正是我想要的,因为我不希望内容被压扁。 我还尝试将输入框的 css 配置为固定且绝对(基本上绑定到 webview 的底部。

根据我的理解,当键盘从输入框中的编辑中弹出时,它也会将框向上推,因为输入框受到 webview 的限制,而 webview 也会被向上推。

任何建议表示赞赏, 谢谢, D

android css cordova android-softkeyboard adjustpan
4个回答
1
投票

Android 有一个我监听的键盘事件。 当显示/隐藏被触发时,我抓取活动输入组件,并按照键盘高度的大小转换 y 轴上的框,键盘高度可以从侦听器中的事件中抓取。 当节目触发时我会变回来。

注意:需要为 android:windowSoftInputMode 禁用调整大小并设置为“adjustPan”


1
投票

使用此行:

getActivity()
    .getWindow()
    .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0
投票

在 AndroidManifest.xml 中使用 webview 将

android:windowSoftInputMode="adjustResize"
添加到 Activity

例如:

<activity
    android:name=".MainActivity"
    android:windowSoftInputMode="adjustResize" />

0
投票

我用javascript/jquery焦点和模糊事件解决了这个问题! 当用户聚焦某个元素(页面底部的元素)时,元素会隐藏,而当模糊时,所有元素都会显示!现在开始工作了。

$(document).ready(function(){
    $('#input6').on('focus',function(){
        $('#input1').parent().hide();
        $('#input2').parent().hide();
        $('#input3').parent().hide();
        $('#input4').parent().hide();
        $('#input5').parent().hide();
    })
    $('#input6').on('blur',function(){
        $('#input1').parent().show();
        $('#input2').parent().show();
        $('#input3').parent().show();
        $('#input4').parent().show();
        $('#input5').parent().show();
    })
})
© www.soinside.com 2019 - 2024. All rights reserved.