做项目,客户要求在App 中隐藏导航栏。这个比较简单,网上资料一大把。 现做下笔记。 Android 隐藏导航栏, 有好几种办法: 1)修改系统级代码,使系统具有隐藏导航栏的功能; 这种实现方法可以参考:www.jianshu.com/p/f741e3c5b1df 2) 直接在App 中通过相应API 隐藏App 自己的导航栏。
第二种是我们今天要讲的主题。 该方案是使用沉㓎式的隐藏那个方案。
public class MainActivity extends Activity { .......... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ...................... final View decorView = getWindow().getDecorView(); final int uiOption = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |View.SYSTEM_UI_FLAG_LAYOUT_STABLE |View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |View.SYSTEM_UI_FLAG_IMMERSIVE |View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; decorView.setSystemUiVisibility(uiOption); // This code will always hide the navigation bar decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener(){ @Override public void onSystemUiVisibilityChange(int visibility) { if((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { decorView.setSystemUiVisibility(uiOption); } } }); } // this is to start to be visible! @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); getWindow().getDecorView().setSystemUiVisibility( 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 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } }onWindowFocusChanged 函数请参考:点击这里
