如何在Android 3.0(蜂巢)中调暗系统栏?

8
如何在Android 3.0(Honeycomb)中以编程方式降低系统栏亮度?
2个回答

13

尝试使用以下代码:

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

有没有办法通过XML实现这个?我希望这样做的原因是只通过资源编辑就能改变现有编译应用程序的功能。 - Jon Willis
1
我已经尝试使用我在ContentView中设置的视图,但它没有起作用。有什么想法吗? - gypsicoder
1
这应该可以解决问题:“getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_HIDDEN)” - Marchy
1
自API 14起,getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);是首选。 - RMalke

1
你可以使用SYSTEM_UI_FLAG_LOW_PROFILE减轻它的亮度,但当用户触摸该栏时它会出现。但你可以禁用除首页以外的界面。
在清单文件中添加以下内容。
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

在onCreate()方法内部。
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_home);
    View v = findViewById(R.id.home_view);
    v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);

where home_view是xml文件的父视图。

 @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
            return false;
        }

 public void onWindowFocusChanged(boolean hasFocus)
     {
             try
             {
                if(!hasFocus)
                {
                     Object service  = getSystemService("statusbar");
                     Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
                     Method collapse = statusbarManager.getMethod("collapse");
                     collapse .setAccessible(true);
                     collapse .invoke(service);
                }
             }
             catch(Exception ex)
             {
             }
     }

你无法捕获主屏幕事件,唯一的方法是为你的应用程序指定主屏幕类别,并让用户进行选择。

 <category android:name="android.intent.category.HOME" />

https://dev59.com/3m7Xa4cB1Zd3GeqPoUwv#15652646 - Murilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接