关于Android透明状态栏的使用以及与软键盘冲突(导致SrollView不能滑动)的解决办法

1、透明状态栏实在android4.4以上才有的新功能

(1)通过在style文件中设置

true
(2)在setContentView()后面加上下面的代码
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

2、当我们启动了透明状态栏以后,会发现包含有EditText的activity在软件盘弹出后,不能滑动了,解决办法是监听软键盘的状态,当软键盘弹出后,重新计算ScrollView的高度

final ScrollView scrollView= (ScrollView) findViewById(R.id.scrollView);
        final View decorView=getWindow().getDecorView();
        decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect rect=new Rect();
                decorView.getWindowVisibleDisplayFrame(rect);
                int screenHeight = decorView.getRootView().getHeight();
                int heightDifference = screenHeight-rect.bottom;//计算软键盘占有的高度  = 屏幕高度 - 视图可见高度
                LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) scrollView.getLayoutParams();
                layoutParams.setMargins(0,0,0,heightDifference);//设置ScrollView的marginBottom的值为软键盘占有的高度即可
                scrollView.requestLayout();
            }
        });

当然了,其他视图控件遇到软键盘弹出后不能滑动的情况,也可使用同样的方法,主要就是2中的setMargin方法


你可能感兴趣的:(android)