文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android项目中怎么显示与隐藏软键盘

2023-05-31 13:32

关注

今天就跟大家聊聊有关Android项目中怎么显示与隐藏软键盘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

代码如下:

import android.app.Activity;import android.content.Context;import android.graphics.Rect;import android.os.Build;import android.util.Log;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import android.view.ViewTreeObserver;public class KeyBoardShowListener {  private Context ctx;  public KeyBoardShowListener(Context ctx) {    this.ctx = ctx;  }  OnKeyboardVisibilityListener keyboardListener;  public OnKeyboardVisibilityListener getKeyboardListener() {    return keyboardListener;  }  public interface OnKeyboardVisibilityListener {    void onVisibilityChanged(boolean visible);  }  public void setKeyboardListener(final OnKeyboardVisibilityListener listener, Activity activity) {    final View activityRootView = ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {      private boolean wasOpened;      private final int DefaultKeyboardDP = 100;      // From @nathanielwolf answer... Lollipop includes button bar in the root. Add height of button bar (48dp) to maxDiff      private final int EstimatedKeyboardDP = DefaultKeyboardDP + (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ? 48 : 0);      private final Rect r = new Rect();      @Override      public void onGlobalLayout() {        // Convert the dp to pixels.        int estimatedKeyboardHeight = (int) TypedValue            .applyDimension(TypedValue.COMPLEX_UNIT_DIP, EstimatedKeyboardDP, activityRootView.getResources().getDisplayMetrics());        // Conclude whether the keyboard is shown or not.        activityRootView.getWindowVisibleDisplayFrame(r);        int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);        boolean isShown = heightDiff >= estimatedKeyboardHeight;        if (isShown == wasOpened) {          Log.e("Keyboard state", "Ignoring global layout change...");          return;        }        wasOpened = isShown;        listener.onVisibilityChanged(isShown);      }    });  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯