Android SoftInputMode为SOFT_INPUT_ADJUST_RESIZE(adjustResize)时没有resize动画的问题

用过android:windowSoftInputMode=”adjustResize”的应该都知道,在该模式下弹出软键盘时,编辑框变位置时会有一个alpha动画。昨天突然发现一个界面里在弹出软键盘时没有了这个alpha动画,resize就显得很生硬。于是就想找下原因,网上也找不到类似的情况,看了好多源码,终于找到原因如下:
getWindow().setBackgroundDrawable(null);
就是这一行导致的,在PhoneWindow里setBackgroundDrawable()函数会调用updateWindowResizeState():

        void updateWindowResizeState() {
            Drawable bg = getBackground();
            hackTurnOffWindowResizeAnim(bg == null || bg.getOpacity()
                    != PixelFormat.OPAQUE);
        }

也就是如果window的backgroundDrawable为null或者不透明时,windowResize时就不会有动画效果。

猜你喜欢

转载自blog.csdn.net/yellowcath/article/details/45893333