android - 重新调整片段后的状态栏覆盖工具栏
问题描述
我的活动有 2 个片段,每个片段都使用私人工具栏。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
tools:context=".BlankFragment">
<include layout="@layout/app_bar" />
</LinearLayout>
我使用以下方法为它们实现了半透明工具栏:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
在第一个片段上,它按我的预期正常工作。在第二个中,工具栏覆盖在状态栏下方。
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(Color.TRANSPARENT);
setContentView(R.layout.activity_main);
BlankFragment a = new BlankFragment ();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, a).commit();
}
片段空白
@OnClick({R.id.btnNext})
public void moveToFragment2(){
FragmentTransaction ft = getFragmentManager().beginTransaction();
BlankFragment2 ab = new BlankFragment2();
ft.add(R.id.fragment_container, ab).commit();
}
任何帮助,将不胜感激。
解决方案
而不是使用
getWindow().setStatusBarColor(Color.TRANSPARENT);
你可以添加到你的片段
getActivity().getWindow().setStatusBarColor(getContext().getColor(R.color.YourColor));
并匹配工具栏颜色。
另一种选择是将应用程序设置为全屏,但您将丢失状态栏,如果我是对的,您需要状态栏。代码是这样的:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
推荐阅读
- unity3d - 从给定点和角度找到矢量幅度的最便宜方法
- python-3.x - 我无法使用条目小部件中的文本
- php - 无法对与 Doctrine 的一对多关联进行排序
- asp.net-core - swagger : 无法加载 API 定义 undefined /swagger/v1/swagger.json
- html - {xml_nodeset (0)} 尝试重现网页抓取示例时出现问题(不要认为这是 JS 问题)
- c# - 基本 ASP.NET Core 中间件项目中的“响应已开始”异常
- c - 结构内的字符串被覆盖,我不知道为什么
- php - Laravel 错误:方法 Illuminate\Auth\SessionGuard::venue 不存在
- r - 如何在时间序列数据上创建 facet_grid?
- azure - 从 azure devops 下载 maven artifcats