Android- скрыть программную клавишу (навсегда) при изменении активности

У моего смартфона есть программные клавиши, которые я хочу постоянно скрывать в своем приложении. Я использую эту функцию ниже, чтобы скрыть программные клавиши.

public void setFullscreen(boolean fullscreen) {
        WindowManager.LayoutParams attrs = getWindow().getAttributes();
        if (fullscreen) {
            attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
            attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
            attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
        }
        else {
            attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
            attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
            attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
        }
        getWindow().setAttributes(attrs);
        View v = this.getWindow().getDecorView();
        v.setSystemUiVisibility(View.GONE);
    }

я вызываю эту функцию во всех действиях в onCreate, перед тем как защищенный void onCreate(Bundle saveInstanceState), как это..

    @Override
protected void onCreate(Bundle savedInstanceState)
{
    setFullscreen(true);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);
}

проблема: я меняю активность, а программные клавиши появляются и снова скрываются. как я могу предотвратить их появление?

я также использую "stateHidden" в манифесте для всех действий

        <activity
        android:name=".myActivity"
        android:windowSoftInputMode="stateHidden" />

надеюсь, вы можете помочь мне... большое спасибо!:)

1 ответ

Решение

В конце концов! вот одно решение. Спасибо!

private void hideSystemUI() {
    getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}



public void setFullscreen(boolean fullscreen) {

    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    if (fullscreen) {
        attrs.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
        attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
        attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
        attrs.flags |= WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;

    }
    else {
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
        attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
    }
    getWindow().setAttributes(attrs);
    hideSystemUI();
}
Другие вопросы по тегам