我司需要修改一个功能:通过发广播实现动态隐藏/显示状态栏和导航栏的功能。现在发现在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();
}
}
};
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();
}
}
};
解决方案 »
- 关于建立安卓工程的简单问题! 马上结贴!
- 获取edittext的内容时,返回无意义的数字
- 从Activity中开启Service的问题
- 急求!!搞笑呢么~这个循环怎么会退出呢~关于读取logcat日志的问题!困扰很久!
- Toast的makeText()方法报错
- android c
- 关于ProgressBar.setProgressDrawable()的问题
- 请问Runnable和dumpstate的问题
- ubuntu ecplise 真机链接不上
- 如何把pjsip通过jni移植到android上
- 请教各位大牛:如何访问proc/net/nf_conntrack文件,感谢之至
- 如何制作类似于excel的软件
<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);
哥们谢了,不过我是需要做动态的隐藏/显示,你这方法我试了没效果