11

在我的平板电脑上,它有以下栏来控制返回、主页等。(我不知道正确的名称、状态栏?控制栏?操作栏?或其他)

在程序中,它使用以下方法进行全屏显示。

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF);

但我不知道为什么酒吧还在这里。因此,我无法拥有正确的屏幕尺寸。

谁能告诉我怎么去掉?

酒吧

4

9 回答 9

36

似乎有一个UNDOCUMENTED标志

yourGreatView.setSystemUiVisibility(8);
  • 没有黑色页脚(“隐藏”系统栏)
  • 如果键盘出现,则调整视图大小(没有重叠的输入)

在 Android 4.1.2 (API 16)
上验证 在 Android 4.1.1 (API 16)
上验证 在 Android 4.0.4 (API 15) 上验证不工作

(所有平板电脑)

于 2013-03-05T15:18:38.487 回答
13

在运行 Android 4+ 的平板电脑中,无法隐藏系统/导航栏

文档系统 UI 可见性控制部分):

SYSTEM_UI_FLAG_HIDE_NAVIGATION是一个要求导航栏完全隐藏的新标志。请注意,这仅适用于某些手机使用的导航栏(它不会隐藏平板电脑上的系统栏)。

但是,您可以尝试像在游戏和视频播放期间所做的那样使系统栏变暗。

SYSTEM_UI_FLAG_LOW_PROFILE标志替换了 STATUS_BAR_HIDDEN 标志。设置后,此标志为系统栏或导航栏启用“低调”模式。导航按钮变暗,系统栏中的其他元素也隐藏。启用此功能对于创建更具沉浸感的游戏很有用,而不会分散系统导航按钮的注意力。

于 2012-09-26T15:32:36.240 回答
5

在 Android 4.4 及更高版本中,您可以完全隐藏导航栏并使用全屏和沉浸式组合使其保持隐藏状态:

@Override
protected void onResume() {
    super.onResume();

    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
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
于 2015-04-17T12:46:14.000 回答
4
public class Utils {

public static void hideNavigations(Activity context) {
    View decorView = context.getWindow().getDecorView();
    decorView.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);
}

}

在您的活动中:

@Override
protected void onResume() {
    super.onResume();
    Utils.hideNavigations(this);
}
于 2017-03-05T06:49:15.253 回答
3

一个非常核心的选择是从 /system/app/ 中删除 SystemUI.apk。但警告这将完全从平板电脑中删除。我在用于前面板信息亭的平板电脑上执行此操作,然后我将平板电脑设置为启动到我的应用程序。

于 2014-06-30T15:04:56.977 回答
1

正如其他人所说的在root模式下使用命令“pm disable com.android.systemui”,所以下面的代码在你的android应用程序中执行这个命令,只需调用下面的方法,你的平板电脑需要root。

private void hideNavigationBar(){
        try {
            Process process = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(process.getOutputStream());
            os.writeBytes("pm disable com.android.systemui\n");
            os.flush();
            os.writeBytes("exit\n");
            os.flush();
            process.waitFor();
            //////////////////////////////////////
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

此代码隐藏android系统上的导航栏,重新出现系统栏使用“pm enable com.android.systemui”而不是之前代码中的“pm disable com.android.systemui”。

于 2015-03-06T13:53:08.993 回答
0

由于系统栏用于在 android 中导航,因此没有简单的方法来实现这一点,您可以禁用/调暗控件:

View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);

但是你可以在没有系统栏的情况下获得屏幕的大小(不确定是从哪个版本开始的,我认为是 3.1)

Method rawW = Display.class.getMethod("getRawWidth");
Method rawH = Display.class.getMethod("getRawHeight");
int width = (Integer)mGetRawW.invoke(dp);
int height = (Integer)mGetRawH.invoke(dp);

如果您的应用程序具有 root 访问权限,还有一种方法可以实现它: http: //ppareit.github.com/HideBar/

于 2012-09-26T15:39:52.580 回答
0

你不能隐藏它,但你可以简单地禁用它,除了家。试试这个链接。. 使用 SYSTEM_UI_FLAG_LOW_PROFILE 您可以使系统栏变暗,并使用onWindowFocusChanged()可以获取焦点并折叠它。

于 2013-03-27T06:04:06.447 回答
0

下面的代码对我有用 -

您可以将其写入 onCreate() 或 onResume( 如果需要)

getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
于 2016-01-06T00:12:24.803 回答