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

来源:互联网 发布:正交矩阵一定是方阵吗 编辑:程序博客网 时间:2024/05/17 01:28

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

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

<item name="android:windowTranslucentStatus">true</item>
(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方法


0 0
原创粉丝点击