美文网首页
沉浸式状态栏下,自定义输入框布局无法被软键盘顶起的问题

沉浸式状态栏下,自定义输入框布局无法被软键盘顶起的问题

作者: 牛奶糖_王小二 | 来源:发表于2017-07-27 15:43 被阅读159次

    沉浸式状态栏下,点击自定义输入框布局,软键盘弹出后,只定义输入框被覆盖,在manifest文件中设置windowSoftInputMode也没有解决,下面是解决方案:

    写一个类,然后再需要弹出软键盘和布局的activity里面setContentView后写上SolveEditText.assistActivity(this)就可以了。

    public classSolveEditText {

                    public static voidassistActivity(Activity activity) {

                                   newSolveEditText(activity);

                     }

       private View mChildOfContent;

       private int usableHeightPrevious;

       private FrameLayout.LayoutParams frameLayoutParams;

       private SolveEditText(Activity activity) {

            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);

    returnr.bottom;

      }

    }

    相关文章

      网友评论

          本文标题:沉浸式状态栏下,自定义输入框布局无法被软键盘顶起的问题

          本文链接:https://www.haomeiwen.com/subject/vokrgttx.html