点击输入框时,软键盘会把下部导航栏顶上去的解决办法

软键盘把导航栏顶到上边和软键盘自动弹出的解决办法:
在清单文件相关的活动中加入:android:windowSoftInputMode="adJustPan"

一下是对windowSoftInputMode属性值的解说:

活动的主窗口如何与包含屏幕上的软键盘窗口交互。这个属性的设置将会影响两件事情:

  1. 软键盘的状态——是否它是隐藏或显示——当活动(Activity)成为用户关注的焦点。
  2. 活动的主窗口调整——是否减少活动主窗口大小以便腾出空间放软键盘或是否当活动窗口的部分被
软键盘覆盖时它的内容的当前焦点是可见的。
在这设置的值(除"stateUnspecified"和"adjustUnspecified"以外)将覆盖在主题中设置的值
它的设置必须是下面列表中的一个值,或一个”state…”值加一个”adjust…”值的组合。

A:StateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
B:stateAlwaysHidden:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
C:stateHidden:用户选择activity时,软键盘总是被隐藏
D:stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
E:stateVisible:软键盘通常是可见的
F:stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
G:adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
H:adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
I:adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感谢您的提问!以下是 Taro Ui Vue3 中防止 H5 安卓机在输入框弹窗键盘将页面上去的一个例子: ``` <template> <div> <AtButton type="primary" @click="toggleModal">弹出模态框</AtButton> <AtModal :isOpened="isOpened" @close="handleClose"> <AtModalHeader>标题</AtModalHeader> <AtModalContent> <div class="input-wrapper"> <input type="text" placeholder="请输入内容" @focus="handleFocus" @blur="handleBlur"> </div> </AtModalContent> <AtModalAction> <Button onClick="handleClose">取消</Button> <Button onClick="handleClose">确定</Button> </AtModalAction> </AtModal> </div> </template> <script> import { defineComponent, onMounted, ref } from 'vue' import { AtButton, AtModal, AtModalHeader, AtModalContent, AtModalAction } from 'taro-ui-vue3' export default defineComponent({ name: 'ModalExample', components: { AtButton, AtModal, AtModalHeader, AtModalContent, AtModalAction, }, setup() { const isOpened = ref(false) const toggleModal = () => { isOpened.value = !isOpened.value } const handleClose = () => { isOpened.value = false } const handleFocus = () => { if (/Android/gi.test(navigator.userAgent)) { setTimeout(() => { document.activeElement.scrollIntoViewIfNeeded() }, 100) } } const handleBlur = () => { if (/Android/gi.test(navigator.userAgent)) { setTimeout(() => { document.activeElement.scrollIntoViewIfNeeded() }, 100) } } onMounted(() => { if (/Android/gi.test(navigator.userAgent)) { const height = window.innerHeight const timer = setInterval(() => { if (window.innerHeight !== height) { document.body.style.height = window.innerHeight + 'px' height = window.innerHeight } }, 100) return () => clearInterval(timer) } }) return { isOpened, toggleModal, handleClose, handleFocus, handleBlur, } }, }) </script> <style scoped> .input-wrapper { padding: 20px; } input { width: 100%; height: 50px; font-size: 18px; border: none; border-bottom: 1px solid #ccc; outline: none; } </style> ``` 这个例子中,我们使用了 Taro Ui Vue3 的 AtModal 组件,同输入框的 focus 和 blur 事件中,通过调用 `scrollIntoViewIfNeeded()` 方法,将输入框滚动到可视区域内。同,在组件挂载,我们通过监听窗口大小的变化,动态设置 body 的高度,以防止页面出现滚动条。希望这个例子能够帮到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值