在我的应用程序中,我需要使状态栏透明(成功实现),并且当手机具有软件导航按钮时,仅当用户从底部轻拂时才显示它们,并且应在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);
中调用它。