public class AndroidBug54971Workaround {    // For more information, see https://code.google.com/p/android/issues/detail?id=5497    // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.    public static void assistActivity(View viewObserving) {        new AndroidBug54971Workaround(viewObserving);    }    private View mViewObserved;//被监听的视图    private int usableHeightPrevious;//视图变化前的可用高度    private ViewGroup.LayoutParams frameLayoutParams;    private AndroidBug54971Workaround(View viewObserving) {        mViewObserved = viewObserving;        //给View添加全局的布局监听器        mViewObserved.getViewTreeObserver().addOnGlobalLayoutListener(new         ViewTreeObserver.OnGlobalLayoutListener() {            public void onGlobalLayout() {                resetLayoutByUsableHeight(computeUsableHeight());            }        });        frameLayoutParams = mViewObserved.getLayoutParams();    }    private void resetLayoutByUsableHeight(int usableHeightNow) {        //比较布局变化前后的View的可用高度        if (usableHeightNow != usableHeightPrevious) {            //如果两次高度不一致            //将当前的View的可用高度设置成View的实际高度            frameLayoutParams.height = usableHeightNow;            mViewObserved.requestLayout();//请求重新布局            usableHeightPrevious = usableHeightNow;        }    }    private int computeUsableHeight() {        Rect r = new Rect();        mViewObserved.getWindowVisibleDisplayFrame(r);        return (r.bottom - r.top);    }}

使用:

//setContentView之后AndroidBug54971Workaround.assistActivity(findViewById(android.R.id.content));

 

更多相关文章

  1. 移动网站开发中常用的10段JavaScript代码
  2. listView 中relativeLayout 布局的 android:layout_alignParentB
  3. Android快速开发-选项卡
  4. android:屏幕自适应
  5. android检测当前网络是否可用
  6. 欢迎使用CSDN-markdown编辑器
  7. Android中文API (109) —— SimpleCursorTreeAdapter
  8. 获取android顶部状态栏高度的两种方式
  9. Android(安卓)Studio初步使用及HelloWorld详解

随机推荐

  1. Android——使用HttpClient的HttpGet和Po
  2. Android4.0 x86试玩
  3. JUST FOR NOTE ---- ANDROID NDK
  4. 如何解决Android(安卓)studio已分享到git
  5. 软工2019作业6——软件评测
  6. android 分析method profiling
  7. Android推送方案分析(MQTT/XMPP/GCM)
  8. android java 设计模式详解 Demo
  9. Android百度地图定位多处回调调用问题
  10. Android中printf和LOGE区别