android 控制系统UI可见性
调节系统栏
项目过程中或多或少需要调节系统状态栏或者需要调节系统导航栏,如下将指引如何修改
你可以通过使用 SYSTEM_UI_FLAG_LOW_PROFILE标记
调节状态栏和通知栏 如下
View decorView = getWindow().getDecorView(); int options = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(options ); 在activity中调用getWindow()方法获取到window对象,接着再通过getDecorView()获取window上层的view视图
接着调用setSystemUiVisibility()相应的参数即可
如果不想设置如上的标记,可通过如下方法 进行清除标记
View decorView = getActivity().getWindow().getDecorView();
decorView.setSystemUiVisibility(0);
隐藏状态栏
1、状态栏显示
2、状态栏隐藏
android版本4.0以及4.0以下的隐藏方法
你可以通过设置application的主题样式 如下
<application ... android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > ... </application>
或者你可以通过代码实现
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_main); } }
android版本4.1以及4.1以上的隐藏方法
View decorView = getWindow().getDecorView(); int options = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(options ); // 以下为隐藏标题栏 ActionBar actionBar = getActionBar(); actionBar.hide();
android内容显示在状态栏后面
View decorView = getWindow().getDecorView();
int options = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(options );
隐藏导航栏
你可以使用SYSTEM_UI_FLAG_HIDE_NAVIGATION标记隐藏导航栏 如下
View decorView = getWindow().getDecorView(); // 同时隐藏导航栏以及状态栏 int options = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(options );
让内容显示在导航栏后面
View decorView = getWindow().getDecorView(); // 同时隐藏导航栏以及状态栏
int options = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
; decorView.setSystemUiVisibility(options );
启用全屏模式
以下代码显示如何隐藏和显示活动中的状态栏和导航栏,而不根据不断变化的屏幕空间调整布局:
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { hideSystemUI(); } } private void hideSystemUI() { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE // 设置内容在状态栏下面 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 隐藏状态栏以及导航栏 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } // 显示所有系统栏通过移除所有标记 private void showSystemUI() { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); }