Andorid监听SoftKeyboard弹起事件

  对于Android键盘事件Google并没有提供一个好的接口去监听它,有时候就为项目需要就必须要自己去想办法去监听,由于我最近也要实现登陆与注册的功能,我的想法很简单实现起来也比较容易,主要的原理是在将Activity的配置android:windowSoftInputMode设置成adjust_resize当然设成其它我觉得也是可以的只是这还没有测试,这样在键盘弹出时Android会将而已进行调整,直接上代码呢。

 

设置inputMode

复制代码
 1 <activity
 2             android:name=".MainActivity"
 3             android:label="@string/app_name"
 4             android:windowSoftInputMode="adjustResize"
 5             >
 6             <intent-filter>
 7                 <action android:name="android.intent.action.MAIN" />
 8 
 9                 <category android:name="android.intent.category.LAUNCHER" />
10             </intent-filter>
11         </activity>
复制代码

 

设置监听而已变化

1
2
3
4
5
6
7
8
9
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    //android.R.id.content 这是包含布局的父控件ID
    View contentView = findViewById(android.R.id.content);<br>     //设置而已监听器
    contentView.addOnLayoutChangeListener(this);
}

 

根据值的变化判断键盘是否显示。


1
2
3
4
5
6
7
8
@Override
  public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
      if(bottom < oldBottom){
          onKeyboardState(true);
      }else if(bottom > oldBottom){
          onKeyboardState(false);
      }
  }

 这样基本上就可以实现键盘的监听呢,我这样写基本上可以满足大部分需求。

 

 

posted @   架构文摘  阅读(939)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示