Как скрыть функциональные кнопки и строку состояния при открытии диалога? - PullRequest
0 голосов
/ 16 апреля 2020

Я хотел бы создать свой собственный диалог, поэтому у меня есть такая реализация

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.NonNull;

public class TutorialDialog extends Dialog
{
    private TextView mTvClose;
    private Button mBtnCheck;
    private EditText mEtLink;

    private DialogCallback mCallback;

    public interface DialogCallback
    {
        void doOnCheckClick(@NonNull final String iLink);
    }

    public TutorialDialog(@NonNull final Context iC)
    {
        super(iC);
    }

    public Dialog setCallback(@NonNull final DialogCallback iCallback)
    {
        mCallback = iCallback;
        return this;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.other_tutorial_dialog_layout);

        initRefs();
        setListeners();
    }

    private void setListeners()
    {
        mBtnCheck.setOnClickListener(i -> doOnCheckBtnClick());

        mTvClose.setOnClickListener(i -> doOnCloseBtnClick());
    }

    private void doOnCloseBtnClick()
    {
        dismiss();
    }

    private void doOnCheckBtnClick()
    {
        String modelLink = mEtLink.getText().toString();

        if (TextUtils.isEmpty(modelLink))
        {
            ((PresidentApp) getContext().getApplicationContext()).sendToast(getContext().getString(R.string.some_text_here));
        }
        else if (mCallback != null)
        {
            mCallback.doOnCheckClick(mEtLink.getText().toString());
            dismiss();
        }
    }

    private void initRefs()
    {
        mEtLink = findViewById(R.id.et_ask_password_link);
        mBtnCheck = findViewById(R.id.btn_ask_password_download);
        mTvClose = findViewById(R.id.tv_ask_password_close);
    }

    @Override
    public void onDetachedFromWindow()
    {
        mBtnCheck.setOnClickListener(null);
        mTvClose.setOnClickListener(null);
        mCallback = null;
        super.onDetachedFromWindow();
    }
}

Также я должен сказать, что мой MainActivity имеет такое onWindowFocusChanged переопределение

override fun onWindowFocusChanged(hasFocus: Boolean)
    {
        super.onWindowFocusChanged(hasFocus)

        if (hasFocus)
        {
            // Standard Android full-screen functionality.
            // Use for hide status bar and navigation buttons
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or //
                    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or //
                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or //
                    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or //
                    View.SYSTEM_UI_FLAG_FULLSCREEN or //
                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

            window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        }
    }

Таким образом, таким образом я не вижу ни строки состояния, ни функциональных кнопок.

Хорошо, проблема в том, что при открытии диалогового окна снова появляются функциональные кнопки и строка состояния

enter image description here

Я надеялся, что если я переопределю onWindowFocusChanged, как в MainActivity, все будет хорошо, но я получаю это вместо

enter image description here

Вопрос - как скрыть строку состояния и функциональные кнопки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...