我对活动中的ui提出了一个严肃的问题。
我发现我可以使用以下代码隐藏完整的ui
public static void disableSystemUi(View v){
final View view = v;
if (view != null) {
//"hides" back, home and return button on screen.
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
View.SYSTEM_UI_FLAG_FULLSCREEN);
view.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
// Note that system bars will only be "visible" if none of the
// LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
View.SYSTEM_UI_FLAG_FULLSCREEN);
}
}
});
}
}
它适用于正常活动,但是当我启动对话框时,系统UI会很快出现,并且会出现在每个对话框片段中。它通过切换正常活动完美地工作。有没有人解决这个问题呢?
我制作了一个视频来准确显示问题。
我知道只有在当前/激活视图中调用此方法时我才能隐藏系统ui。
我希望有人可以帮助我:(
编辑:
是的,我在对话框片段中使用了这个方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.i(TAG, "onCreateView()");
//Log.w("Popup", "onCreateView(), this buttonSet is " + (this.buttonSet == null ? "" : " not") + "null");
//Log.w("Popup", "onCreateView(), this builder is " + (this.builder == null ? "" : " not") + "null");
//Log.w("Popup", "onCreateView(), this builder's buttonset is " + (this.builder.getButtonSet() == null ? "" : " not") + "null");
// Somehow, this builder will not be null, however, the buttonSet will be. Fix it!?????????W WTWTTWTTWF
//if(builder != null && buttonSet == null) {
// buttonSet = builder.getButtonSet();
//
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View rootView = inflater.inflate(R.layout.popup_container, container, true);
LinearLayout vg = (LinearLayout) rootView;
this.container = vg;
BootReceiver.disableSystemUi(getDialog().getWindow().getDecorView());
Log.i(TAG, "onCreateView(): The rootView has a paddingTop of " + vg.getPaddingTop());