android 键盘上方浮动,【已解决】点击input输入框时Android端底部的Tab弹出显示在键盘上方...

已经用Preact实现H5页面的移动端app了

iOS和Android分别是原生app去打包加了个壳,内部用Webview去加载H5页面

现在遇到一个问题:

Android端,对于input输入框来说,点击后键盘从底部弹出

但是结果原先在app底部的tab也浮动到键盘上面了,折腾了部分内容,影响输入:

9d3240b3eb3b504e95244abe10d50296.png

c91dc095dbe22386f34db4a8e38053be.png

注:iOS不存在此问题:

49300cbaaf3d18545e784b27bdcac680.png

然后对于整个tab导航栏的div的position从fixed改为absolute:

f94de8b74047de77575f5810f71cb825.png

42748079ee3ee3c35ae327b3a9fbb9d5.png

结果:

问题依旧。

android webview 输入法遮挡

android webview input method

android webview position fixed move up

看起来像是:android中的webview对于position:fixed 有bug?

user-scalable改为no,就可以了?

e612260f90c4a0c46d6eb32a86eac17f.png

去试试,问题依旧。

android webview div fixed move up when keyboard show

继续调试:

effce6224c7547d95ebf6da1cb805472.png

感觉是:

当android的显示键盘是,底部的边缘就上移了。

-》所以即使上述的bottom为0,所以也还是会上浮

-〉而整个页面的高度,并没有受影响

加上!important:

.wrapper {

// position: fixed;

position: absolute !important;

看看结果如何

问题依旧:

322003c9945c18d0e9a22dc9646d3c63.png

感觉是:

当键盘弹出时,整个webview的高度都减少了

-》所以android远程调试的左边webview的页面的高度就减少了,都看不到键盘

android keyboard show webview  height

android keyboard show reduce page  height

android keyboard reduce page  height

android webview keyboard

android WebKit keyboard

android WebKit keyboard page move up

让原生app的壳中把相关代码改为:

android:windowSoftInputMode="adjustPan"

或:

android:windowSoftInputMode=“adjustNothing"

看看结果

结果就是:

【总结】

不需要改动webkit相关的代码,而是去把android的原生代码改为:

android:windowSoftInputMode="adjustPan"

后,就可以了:

在点击了input弹出键盘后:

android手机端截图:

34cca26a0887e7ec615757be97c85344.png

Mac中Chrome调试的效果是:

0bc17a7753cd5fe854149e9fb8382c4c.png

从上图可见:

在键盘弹出后,原先的WebKit的高度没有(像之前一样)被压缩和降低,而是正常的(保持不变)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Android Studio中实现单选对话框确认后在底部浮动显示该选项内容用Toast的示例代码: 1. 在布局文件中添加一个TextView用于显示选项内容: ``` <TextView android:id="@+id/selected_option" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Selected option will be displayed here" android:textSize="18sp" /> ``` 2. 在Activity中定义一个数组用于存储选项列表,以及一个整型变量用于存储选中的位置: ``` private String[] options = {"Option 1", "Option 2", "Option 3", "Option 4"}; private int selectedPosition = -1; ``` 3. 在Activity中创建一个AlertDialog.Builder对象用于显示单选对话框: ``` AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Select an option"); builder.setSingleChoiceItems(options, selectedPosition, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { selectedPosition = which; } }); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (selectedPosition != -1) { String selectedOption = options[selectedPosition]; Toast.makeText(MainActivity.this, selectedOption + " selected", Toast.LENGTH_SHORT).show(); TextView selectedOptionTextView = findViewById(R.id.selected_option); selectedOptionTextView.setText(selectedOption); } } }); builder.setNegativeButton("Cancel", null); AlertDialog dialog = builder.create(); dialog.show(); ``` 4. 在点确认按钮,获取选中的选项内容并显示在TextView中,并使用Toast在底部浮动显示选项内容。 这样,当用户选择一个选项并点确认后,该选项的内容将显示在TextView中,并在底部浮动显示选项内容的Toast。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值