android 自定义View在弹出的软键盘之上,以及测量软键盘高度和监听软键盘状态

本文介绍了如何在Android项目中实现在软键盘弹出时,自定义View显示在其上方,并详细讲解了如何监听软键盘的显示和隐藏,以及测量软键盘的高度。通过创建PopupWindow和利用InputMethodManager,实现了弹出评论功能,并添加了动画效果。此外,还提供了一个软键盘监听工具类SoftKeyBoardListener,用于监听软键盘的显示和隐藏事件。
摘要由CSDN通过智能技术生成

    项目中需要做评论功能,在软键盘弹出后在其上方弹出自定义的view,看下效果:


         原理很简单,软键盘上方就是一个自定义的PopuWindow,在弹出PopuWindow的代码中激活了软键盘,随即PopuWindow就被软键盘顶到了其上方,里面还给PopuWindow加入了显示 和消失的动画,另外实现了对软键盘显示和隐藏状态的监听,以及对其高度的测量,需要做些逻辑处理的话可以直接在里面写相关的代码就ok了,开始上代码。。。。


1.先看下MainActivity.Java中的代码:

[java]  view plain   copy
  1. public class MainActivity extends Activity implements OnClickListener {  
  2.   
  3.     private Button bt;  
  4.     private Button btn_submit;  
  5.     private PopupWindow popupWindow;  
  6.   
  7.     @Override  
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.activity_main);  
  11.         bt = (Button) findViewById(R.id.bt);  
  12.         bt.setOnClickListener(this);  
  13.         //注册软键盘的监听  
  14.         SoftKeyBoardListener.setListener(MainActivity.this,  
  15.                 new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {  
  16.                     @Override  
  17.                     public void keyBoardShow(int height) {  
  18.                         Toast.makeText(MainActivity.this,  
  19.                                 "键盘显示 高度" + height, Toast.LENGTH_SHORT).show();  
  20.                     }  
  21.   
  22.                     @Override  
  23.                     public void keyBoardHide(int height) {  
  24.                         Toast.makeText(MainActivity.this,  
  25.                                 "键盘隐藏 高度" + height, Toast.LENGTH_SHORT).show();  
  26.                         if(popupWindow!=null){  
  27.                             popupWindow.dismiss();  
  28.                         }  
  29.                     }  
  30.                 });  
  31.     }  
  32.   
  33.     /** 
  34.      * show soft input 
  35.      */  
  36.     private void popupInputMethodWindow() {  
  37.         new Thread() {  
  38.             @Override  
  39.             public void run() {  
  40.                 super.run();  
  41.                 InputMethodManager imm = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);  
  42.                 imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);  
  43.   
  44.             }  
  45.         }.start();  
  46.         //  
  47.     }  
  48.   
  49.     /** 
  50.      * show comment popupwindow(弹出评论的popupWindow) 
  51.      */  
  52.     private void showPopupCommnet(final int pid, final int type) { // pe表示是评论还是举报1.代表评论。2.代表举报  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值