我试图通过运行Android 4.2.2的应用程序全局隐藏导航栏
我设法使用以下(admitadly hackish)方法实施:
getWindow().getDecorView().setSystemUiVisibility(8);
成功删除导航栏(事实上它是hackish非常好 - 这适用于自助服务终端,所以它只能安装在有限数量的设备上)
现在我试图在MainActivity以外的地方删除导航栏 - 例如在AlertDialog / LoginDialog期间重新出现时。
我试图使用:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(),R.style.HoloDarkDialog));
LayoutInflater inflater = getActivity().getLayoutInflater();
variables = SingletonVariables.getInstance();
view = inflater.inflate(R.layout.login, null);
EditText userEditText = (EditText) view.findViewById(R.id.loginUserIdEditText);
getWindow().getDecorView().setSystemUiVisibility(8);
但是这会导致错误:
The method getWindow() is undefined for the type LoginDialog
有谁知道可以避免这种方式?
// Function to handle show dialog
public void showLogin(View view, String whichActivity) {
pd = new ProgressDialog(this.getApplicationContext());
pd.setMessage("Logging in, Please wait....");
LoginDialog logindialog = new LoginDialog();
logindialog.setWhichActivity(whichActivity);
logindialog.show(getFragmentManager(), "MyLogin");
}
答案 0 :(得分:2)
尝试此代码
@Override
public void show() {
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
super.show();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN;
this.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
}
答案 1 :(得分:1)
也许这可以帮到你? https://stackoverflow.com/a/23435922/3464293
像这样的Smthng?View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
<强>更新强> (来源:https://stackoverflow.com/a/2844648/3464293)
在LoginDialog.java中添加此方法:
@Override
public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.requestWindowFeature(Window.FEATURE_NO_TITLE);
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
window.getDecorView().setSystemUiVisibility(uiOptions);
}
然后尝试。删除以前的更新。