仅对导航栏启用沉浸模式

时间:2019-02-26 12:33:26

标签: android android-statusbar android-navigation-bar

在我的应用程序中,我需要使状态栏透明(成功实现),并且当手机具有软件导航按钮时,仅当用户从底部轻拂时才显示它们,并且应在X时间后消失(我相信这是由系统定义的)。 我看了很多教程,但所有教程都显示了如何启用沉浸式模式,这也导致隐藏状态栏。 这是隐藏状态栏和导航按钮的代码:

#include <QtWidgets>

class ClearLineEditStyle: public QProxyStyle{
public:
    using QProxyStyle::QProxyStyle;
    QPixmap standardPixmap(StandardPixmap standardIcon, const QStyleOption *option, const QWidget *widget) const{
        if(standardIcon == SP_LineEditClearButton){
            return QPixmap(":/clear.png");
        }
        return QProxyStyle::standardPixmap(standardIcon, option, widget);
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QComboBox combo;
    ClearLineEditStyle *style = new ClearLineEditStyle(combo.style());
    combo.setStyle(style);
    combo.setEditable(true);
    if(QLineEdit *le = combo.lineEdit())
            le->setClearButtonEnabled(true);
    combo.show();
    return a.exec();
}

我无法使它像需求那样工作,有什么主意吗?

如果有人需要代码来制作透明的状态栏,则这里的代码有效:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Log.d("LogTag", "onFocusChanged");
    if (hasFocus) {
        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);
    }
}

在“活动”的Window window = getWindow(); WindowManager.LayoutParams winParams = window.getAttributes(); winParams.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; window.setAttributes(winParams); window.setStatusBarColor(Color.TRANSPARENT); 中调用它。

0 个答案:

没有答案