当点击按钮时,阻止软键盘关闭

  最近在写一个聊天APP,遇到了个问题,当在文本框输入文字后,点击旁边的发送按钮,因为EditText失去焦点而关闭软键盘。为了解决这个问题,Google了半天无果,一开始的解决办法是点击按钮后,重新弹出软键盘

        InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

  这个方法有个缺点,就是软键盘关闭再重新打开会出现闪烁,影响体验。后来在stackoverflow的站内搜索找到了方法。在按钮的OnClick中加入如下代码,editInput就是文本框

      InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        imm.showSoftInput(edtInput, InputMethodManager.SHOW_FORCED);
        edtInput.requestFocus();

这样就可以像微信那样,点击发送软键盘也不会关闭

stackoverflow原帖:点击打开链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android中,当软键盘弹出,按钮通常会被遮挡,如果希望让按钮随着软键盘向上移动,可以通过以下步骤实现: 1. 首先,在你的布局文件中,将整个布局包裹在一个ScrollView中,以便能够上下滚动内容。 2. 在AndroidManifest.xml文件中,找到对应Activity的节点,并添加属性:android:windowSoftInputMode="adjustResize"。这会使得在软键盘弹出,布局会随之调整以适应软键盘。 3. 在Java代码中,为按钮所在的父布局设置一个监听器,用于监听软键盘的显示和隐藏事件。 ``` View rootView = findViewById(R.id.root_layout); rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int screenHeight = rootView.getRootView().getHeight(); int keypadHeight = screenHeight - r.bottom; if (keypadHeight > screenHeight * 0.15) { // 如果软键盘的高度超过屏幕高度的15%,即软键盘显示状态 // 移动按钮,使其显示在软键盘的上方 button.setVisibility(View.VISIBLE); } else { // 如果软键盘的高度小于15%,即软键盘隐藏状态 // 恢复按钮原来的位置 button.setVisibility(View.GONE); } } }); ``` 通过以上步骤,当软键盘弹出,按钮所在的布局会向上移动,确保按钮不被软键盘遮挡。当软键盘隐藏,按钮会恢复到原来的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值