在很多Android的项目里面,隐藏标题栏与隐藏信息栏都是会经常用到的。
下面便是本菜鸟在学习过程中的一些领悟笔记。
一、只隐藏标题栏的效果图
实现该效果有两种做法:
1:在 public void onCreate(Bundle savedInstanceState)函数中添加代码
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
这行代码必须添加在
setContentView(R.layout.main);方法前,否则会在程序执行时报错
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); }
2:在 AndroidManifest.xml 文件中 activity 节点中添加
android:theme="@android:style/Theme.NoTitleBar"
二、隐藏信息栏的效果图
实现该效果的做法:
1:在 public void onCreate(Bundle savedInstanceState)函数中添加代码
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSEEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
这行代码必须添加在
setContentView(R.layout.main);方法前,否则会在程序执行时报错
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); }
三、隐藏标题栏跟信息栏的效果图
实现该效果的做法:
1:在 public void onCreate(Bundle savedInstanceState)函数中添加代码
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSEEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
代码必须添加在
setContentView(R.layout.main);方法前,否则会在程序执行时报错
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); }
2:在 AndroidManifest.xml 文件中 activity 节点中添加
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
在以上三种效果中,其中一、三列举了两个方式实现,虽然实现的最终效果是一样,但是在执行的过程中有着微小的差别。
在onCreate 函数中添加代码一部分,一直都强调必须在setContentView(R.layout.main);方法执行之前添加,requestWindowFeature、getWindow 两个方法是告诉系统在描述这个窗体时的属性设置,所以必须在窗体被描述出来前做好声明。
好了到了这里就引发出一个微小的差别了,当程序运行时,虽然窗体在没有被完全描述出来之前,其实这个窗体已经被打开了,那么只要机子运行比较卡的话,可以发现一个问题,程序在一开始运行时,标题栏跟信息栏是存在的,但是在窗体内容被整体描述出来的时候,标题栏或者信息栏才会被隐藏掉。
而第二种在AndroidManifest.xml文件中修改节点属性的操作则没出现该情况,可见程序在初始化运行时先读取了该配置文件。
注:以上所有观点均为笔者在自己的环境下实践结果,如有不同观点或者错误的描述,还请各位看官见谅,欢迎拍砖。