Unable To Hide Navigation Bar during AlertDialog/LoginDialog

点点圈 提交于 2019-12-22 05:26:14

问题


I'm attempting to hide the navigation bar globally through my app running Android 4.2.2

I have managed to use the following (admitadly hackish) method of implementing:

getWindow().getDecorView().setSystemUiVisibility(8);

Which successfully removes the Navigation bar (the fact it is hackish is perfectly fine - this is for a kiosk so it will only be installed on a limited number of devices)

Now I'm attempting to remove the navigation bar in places other than my MainActivity - such as when it reappears during an AlertDialog/LoginDialog.

I'm attempting to use:

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);

However this result in the error:

The method getWindow() is undefined for the type LoginDialog

Does anyone know of a way this might be avoided?

Edit: (additional requested source code)

// 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");
}

回答1:


try this code

@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);

}



回答2:


Maybe this can help you? https://stackoverflow.com/a/23435922/3464293

Smthng like this?

View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

Update: (source: https://stackoverflow.com/a/2844648/3464293)

In your LoginDialog.java add this method:

@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);
}

and try then. Remove previous updates.



来源:https://stackoverflow.com/questions/23520892/unable-to-hide-navigation-bar-during-alertdialog-logindialog

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!