zoukankan      html  css  js  c++  java
  • Android 监听键盘弹出和收起.

    entends:http://stackoverflow.com/questions/36837066/how-to-validate-virtual-keyboard-visibility

    监听键盘弹出和收起.

    /*
    Somewhere else in your code
    */
    
    RelativeLayout mainLayout = findViewById(R.layout.main_layout); // You must use your root layout
    InputMethodManager im = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);     
    
    /*
    Instantiate and pass a callback
    */
    
    SoftKeyboard softKeyboard;
    softKeyboard = new SoftKeyboard(mainLayout, im);
    softKeyboard.setSoftKeyboardCallback(new SoftKeyboard.SoftKeyboardChanged()
    {
     @Override  
      public void onSoftKeyboardHide()   
      {
            // Code here  
      }  
    
      @Override 
       public void onSoftKeyboardShow()  
       { 
           // Code here 
       }   
    });     
    
    /*
    Open or close the soft keyboard programatically
    */
    
    softKeyboard.openSoftKeyboard();
    softKeyboard.closeSoftKeyboard();
    
    
    /*
    SoftKeyboard can catch keyboard events when an EditText gains focus and keyboard appears
    */
    
    
    /* Prevent memory leaks:
    */
    
    @Override
    public void onDestroy()
    {  
      super.onDestroy(); 
       softKeyboard.unRegisterSoftKeyboardCallback();
    }
    final View parentView= findViewById(R.id.myrootview);  
           parentView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int heightDiff = root.getRootView().getHeight() - root.getHeight();
    
                Rect rectgle= new Rect();
                Window window= getWindow();
                window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
                int contentViewTop= 
                    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
    
                if(heightDiff <= contentViewTop){
                    //Soft KeyBoard Hidden---button visible
    
                }else{
                    //Soft KeyBoard Shown---button hide
                }
    
    
             }
        });
  • 相关阅读:
    [LeetCode] Baseball Game
    [Linux] Shell Scripts
    [Linux] 正则表达式与文件格式化处理
    [Linux] 学习bash
    [Linux] vim程序编辑器
    [Linux] 文件与文件系统的压缩打包与备份
    [LeetCode] Reverse Words in a String
    [LeetCode] Reverse Integer
    [国嵌笔记][017][Makefile工程管理]
    [国嵌笔记][016][交叉工具链]
  • 原文地址:https://www.cnblogs.com/niray/p/5437320.html
Copyright © 2011-2022 走看看