By
coney
更新日期:
Android全屏:消除title_bar和虚拟导航栏
消除title_bar
在进行android开发时,每个Activity会默认带上一个title bar用以显示程序名,有时为了扩大屏幕的显示区域需要去掉这个title bar,这个时候可以用以下方法操作:
最简单的就是动态修改了。
代码动态修改:
1
| this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
注意这句一定要写在setContentView()方法的前面,不然会报错的
因为是动态修改,所以可能会在程序运行的开始,看到先出现标题栏,然后再消失的情况
修改AndroidManifest.xml文件
1 2 3
| <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
|
上面将属性加到了application,会应用到整个程序,如果想应用到某一个activity,可以像下面这样:
1 2 3
| <activity android:name="xxx" android:theme="@android:style/Theme.NoTitleBar">
|
还有一种情况就是默认的Theme.NoTitleBar
不满足我们的需求,或者想针对于某几个activity做一些操作,比如notitle,orientation等等,可以参考第三种方式,自己定义一个主题。
在res/values目录下面新建一个style.xml的文件
1 2 3 4 5 6
| <?xml version="1.0" encoding="UTF-8" ?> <resources> <style name="notitle"> <item name="android:windowNoTitle">true</item> </style> </resources>
|
这样,我们就自定义了一个style,就相当于一个主题,然后在AndroidManifest.xml文件中定义
1 2 3
| <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/notitle">
|
全屏
也是三种方法,参考上面。
1
| getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
1
| android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
1 2 3
| application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/fullscreem"
|
去掉虚拟导航
其实现在全屏了还是存在最下面的虚拟导航,即home,back的系统按键。
这里并不能彻底隐藏,只能点击隐藏,如果你只是设置了setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
那么点击屏幕后就会出来,而且再也隐藏不了了,所以这里我建议给activity加一个onClick事件。
1 2 3 4 5 6 7 8 9 10 11
| public void onClick(View v) { // TODO Auto-generated method stub int i = v.getSystemUiVisibility(); if (i == View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) { v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); } else if (i == View.SYSTEM_UI_FLAG_VISIBLE) { v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); } else if (i == View.SYSTEM_UI_FLAG_LOW_PROFILE) { v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } }
|
然后你就可以实现点击隐藏,点击再出现,再点击又隐藏了。