zoukankan      html  css  js  c++  java
  • android让xml布局的底部跟随软键盘

    全屏的时候,设置adjustResize是没有什么卵用的。

    在stackoverflow上看到一个方法:动态设置activity根布局的高度,做到xml底部随着软键盘的弹出而上移。

    链接:http://stackoverflow.com/questions/7417123/android-how-to-adjust-layout-in-full-screen-mode-when-softkeyboard-is-visible/19494006#19494006

    具体实现:

    private AndroidBug5497Workaround(Activity activity) {
         // 这句代码看过《深入理解android》第一卷第一章的应该都懂(卧槽,好像不是这本,忘了),另外就是自己写xml的时候,id尽量不要用content,这已经被系统占用了 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); } }

      

  • 相关阅读:
    [MetaHook] Quake FMOD player demo
    [MetaHook] Quake FMOD function
    [MetaHook] Load TGA texture to OpenGL
    [MetaHook] R_RicochetSprite
    [MetaHook] R_SparkStreaks
    [MetaHook] R_SparkEffect
    [MetaHook] R_SparkShower
    [MetaHook] Load large texture from model
    [MetaHook] Quake Bink function
    变量命名规范
  • 原文地址:https://www.cnblogs.com/aprz512/p/4972085.html
Copyright © 2011-2022 走看看