我司需要修改一个功能:通过发广播实现动态隐藏/显示状态栏和导航栏的功能。现在发现在setting界面隐藏状态栏时候顶部有一块黑色的不能隐藏,我使用eclipse查看布局发现是 android:id/statusBarBackground 这id,包名是com.android.settings,类名是android.view.View,这个在Settings和SystemUI类里面都没有找到,请问该如何修改?现在发现在闹钟界面也有这个问题,应该不是在Setting或者SystemUI修改,请问有何解决办法?
static final String TAG_SHOW="1";
static final String TAG_HIDE="0";
private static final String INTENT_BAR_ACTION_SHOW="bcd.intent.action.BAR_SHOW";
private static final String INTENT_BAR_ACTION_HIDE="bcd.intent.action.BAR_HIDE"; private void removeNavigationBar() {
        if (DEBUG)
Log.i("wangp", "=========removeNavigationBar===== " + mNavigationBarView);
        if (mNavigationBarView == null) 
return;
        if (mNavigationBarView != null){
             mWindowManager.removeViewImmediate(mNavigationBarView);
             mNavigationBarView = null;
        }
    }
private BroadcastReceiver mShowOrHideStatusBarReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            if (DEBUG)
Log.v(TAG, "onReceive: " + intent);
            String action = intent.getAction();
            if (INTENT_BAR_ACTION_SHOW.equals(action)) {
// flagShow=true;
                Settings.System.putInt(mContext.getContentResolver(),
                        "show_statusbar", 1);
                //show
                mStatusBarWindow.setVisibility(View.VISIBLE);
                mStatusBarView.setVisibility(View.VISIBLE);
                inflateNavigationBarView(context);
                addNavigationBar();
            } else if (INTENT_BAR_ACTION_HIDE.equals(action)) {
// flagShow=false;
                Settings.System.putInt(mContext.getContentResolver(),
                        "show_statusbar", 0);
                //hide
                mStatusBarWindow.setVisibility(View.GONE);
                mStatusBarView.setVisibility(View.GONE);
                removeNavigationBar();
            }
        }
    };

解决方案 »

  1.   

    在Android5.0以上就不需要代码乱搞了,下面自己选吧全屏,状态栏和导航栏半透明(api>19)
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>全屏,状态栏和导航栏全透明(api>21)
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@color/w_c_0000</item>
    <item name="android:navigationBarColor">@color/w_c_0000</item>
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
      

  2.   

    写在theme里面的
      

  3.   

    写在theme里面的
    哥们谢了,不过我是需要做动态的隐藏/显示,你这方法我试了没效果