Android解决全屏下WebView中输入框被键盘遮挡

xiaoxiao2021-02-27  196

/**   * 解决webView键盘遮挡问题的类   * Created by zqy on 2016/11/14.   */  public class KeyBoardListener {      private Activity activity;  // private Handler mhanHandler;          private View mChildOfContent;      private int usableHeightPrevious;      private FrameLayout.LayoutParams frameLayoutParams;        private static KeyBoardListener keyBoardListener;          public static KeyBoardListener getInstance(Activity activity) {  // if(keyBoardListener==null){          keyBoardListener=new KeyBoardListener(activity);  // }          return keyBoardListener;      }          public KeyBoardListener(Activity activity) {          super();  // TODO Auto-generated constructor stub          this.activity = activity;  // this.mhanHandler = handler;        }          public void init() {              FrameLayout content = (FrameLayout) activity                  .findViewById(android.R.id.content);          mChildOfContent = content.getChildAt(0);          mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(                  new ViewTreeObserver.OnGlobalLayoutListener() {                      public void onGlobalLayout() {                          possiblyResizeChildOfContent();                      }                  });          frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent                  .getLayoutParams();          }          private void possiblyResizeChildOfContent() {          int usableHeightNow = computeUsableHeight();          if (usableHeightNow != usableHeightPrevious) {              int usableHeightSansKeyboard = mChildOfContent.getRootView()                      .getHeight();              int heightDifference = usableHeightSansKeyboard - usableHeightNow;              if (heightDifference > (usableHeightSansKeyboard / 4)) {  // keyboard probably just became visible                  frameLayoutParams.height = usableHeightSansKeyboard                          - heightDifference;              } else {  // keyboard probably just became hidden                  frameLayoutParams.height = usableHeightSansKeyboard;              }              mChildOfContent.requestLayout();              usableHeightPrevious = usableHeightNow;          }      }          private int computeUsableHeight() {          Rect r = new Rect();          mChildOfContent.getWindowVisibleDisplayFrame(r);          return (r.bottom - r.top);      }     }  调用方式为:KeyBoardListener.getInstance(this).init();,即可解决全屏下,键盘遮挡问题。
转载请注明原文地址: https://www.6miu.com/read-10200.html

最新回复(0)