Android 解决输入法弹出导致布局上移,背景压缩,闪烁
程序开发
2023-09-02 17:30:30
介绍:
通常情况下应用在调出输入法时应用布局会改变布局大小或配置布局适配输入法高度,如果应用有设置背景则会因为高度改变导致背景被压缩出现闪烁显示。
下面这张图是我的布局全屏显示,主题是透明,设置一个遮罩层给背景,因为输入法弹出导致布局高度改变遮罩层背景也会改变高度,这个过程可以看到底部壁纸背景,如果我们强制设置布局大小为全屏就会引起输入法遮挡布局问题。
解决方案:
输入法弹出后我们的布局高度会被改变,所以会有一个过程可以看到背景闪一下。
虽然布局大小改变了,但底部DecorView高度是不会改变的,所以我们可以将遮罩或背景设置在这一层。
private void setBackground(){DecorView view = (DecorView) findViewById(R.id.search_bg).getRootView();if(view != null) {Drawable drawable = getDrawable(R.drawable.bg_shader);view.setBackground(drawable);}}
如果状态栏和导航栏需要特殊处理可以在单独设置颜色遮盖DecorView上面
Window window = getWindow();try {int vis = window.getDecorView().getSystemUiVisibility();//白色vis &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;window.getDecorView().setSystemUiVisibility(vis);//设置导航栏和状态栏颜色window.setNavigationBarColor(Color.TRANSPARENT);window.setStatusBarColor(Color.TRANSPARENT);} catch (Exception e) {e.printStackTrace();}
标签:
上一篇:
ccat题目java4,CCAT考试真题带答案1
下一篇:
相关文章
-
无相关信息