【问题标题】:Android tablet navigation bar won't hideAndroid平板导航栏不会隐藏
【发布时间】:2012-09-30 01:21:22
【问题描述】:

我正在尝试使用我在互联网上找到的方法隐藏导航栏。

我有一个显示 WebView 的简单布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/layout" >

    <WebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

我在应用启动时使用的代码是:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    web.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

但这不会隐藏导航栏。

我已经添加...

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

...我的活动也是如此。

我怎样才能做到这一点?

【问题讨论】:

  • 嗨,我仍然遇到这个问题。对于 Nexus 7 和 Nexus 10 等设备,屏幕底部有一个空白。

标签: android android-4.0-ice-cream-sandwich tablet navigationbar


【解决方案1】:

这可能会有所帮助:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getWindow().setUiOptions(//
    View.SYSTEM_UI_FLAG_FULLSCREEN|//
    View.SYSTEM_UI_FLAG_IMMERSIVE|//
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    setContentView(R.layout.main);

    findViewById(R.id.main).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            v.setSystemUiVisibility(//
                View.SYSTEM_UI_FLAG_FULLSCREEN|//
                View.SYSTEM_UI_FLAG_IMMERSIVE|//
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    });
}

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
【解决方案2】:

你可以隐藏导航栏,试试这个

public void FullScreencall() {
    if(Build.VERSION.SDK_INT < 19) //19 or above api
        View v = this.getWindow().getDecorView();
        v.setSystemUiVisibility(View.GONE);
    } else {
            //for lower api versions.
        View decorView = getWindow().getDecorView(); 
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        decorView.setSystemUiVisibility(uiOptions);
    }
}

【讨论】:

  • 不应该是if(Build.VERSION.SDK_INT &gt; 19) //19 or above api吗?注意大于号。
【解决方案3】:

您不能在给定框架内隐藏导航栏。但是,如果您可以选择生根设备,则有一种解决方法:

  1. Root device

  2. Install and run Busybox

  3. Install HideBar

在 HideBar 中有一个在“Kiosk”模式下运行的选项,在该模式下无法重新显示导航栏。不用说,你真的需要小心这个。


【讨论】:

  • @JohnyTex 不确定,请尝试:bit.ly/1CLKCf9 这已经很老了,我不认为这个答案是相关的了
【解决方案4】:

您不能永久隐藏平板电脑上的系统栏。

SYSTEM_UI_FLAG_HIDE_NAVIGATION 在 Android 4.1 及更高版本上会隐藏系统栏,但只要用户执行任何操作,它就会重新出现。

【讨论】:

  • 是的,它和你说的一样。但我想在 userInteraction 方法上完成活动。但它无法正常运行,在两次单击活动后完成我的活动
猜你喜欢
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多