Android M App 永久隐藏导航栏的Solution
2017-09-22 本文已影响146人
弘二大师
做项目,客户要求在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 函数请参考:点击这里