Dialog探索一:MaterialDialog

关于Dialog的实现方式,Google官方给出了详细的指导,点击这里。截图如下


我的demo使用AlertDialog的自定义布局实现了MaterialDialog,源码点击这里


Dialog背景设置:

问题:我对Dialog设置的背景总是不生效,大概修改了四五次xml样式都不生效。

关键点:然后我怀疑是Dialog的window对象在最底层的样式起作用。

解决:

public class MyDialogextends Dialog{

public MyDialog (Context context) {
    super(context,android.R.style. Theme);  //在这需要设置个系统的theme替换dialog默认的主题,不设置下面的window设置都无效
    setOwnerActivity((Activity)(context));
    Window window = getWindow();
    requestWindowFeature(Window. FEATURE_NO_TITLE);  //去掉dialog的title
    window.addFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN);  //全屏的flag
    window.setBackgroundDrawableResource(android.R.color.transparent); //设置window背景透明
    WindowManager.LayoutParams lp = window.getAttributes();
    lp.alpha = 1.0f;
    lp.dimAmount = 0.0f; //dimAmount在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗
    window.setAttributes(lp);
    this.setCancelable( false);
}

public void show(FlashAd flashAd){
    this.setContentView(flashAd);
    this.show();
}
解决链接: https://my.oschina.net/CFred/blog/402390



效果见下图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想要替代 QMessageBox::Question 对话框,可以创建一个自定义的 QDialog 对话框。这种方式可以为对话框添加更多自定义控件和功能,并且可以更好地控制对话框的行为和外观。 下面是一个示例代码片段,演示如何创建一个自定义的 QDialog 对话框来替代 QMessageBox::Question 对话框: ```cpp // 创建一个自定义的 QDialog 对话框 class CustomDialog : public QDialog { public: CustomDialog(QWidget *parent = nullptr) : QDialog(parent) { // 设置对话框的标题和大小 setWindowTitle("Question"); resize(300, 100); // 创建一些自定义控件 QLabel* label = new QLabel("Do you want to proceed?", this); QPushButton* yesButton = new QPushButton("Yes", this); QPushButton* noButton = new QPushButton("No", this); // 设置控件的布局 QVBoxLayout* layout = new QVBoxLayout(this); layout->addWidget(label); layout->addWidget(yesButton); layout->addWidget(noButton); // 连接按钮的信号和槽 connect(yesButton, &QPushButton::clicked, this, &QDialog::accept); connect(noButton, &QPushButton::clicked, this, &QDialog::reject); } }; // 显示自定义对话框并获取用户的选择 CustomDialog dialog; if (dialog.exec() == QDialog::Accepted) { // 用户选择了“是” } else { // 用户选择了“否” } ``` 这个示例代码片段创建了一个自定义的 QDialog 对话框,并在其中添加了一些标签和按钮。用户可以通过单击“是”或“否”按钮来做出选择。通过调用 QDialog::exec() 方法来显示对话框并等待用户的响应。如果用户单击了“是”按钮,对话框将返回 QDialog::Accepted;如果用户单击了“否”按钮,对话框将返回 QDialog::Rejected。 需要注意的是,自定义对话框的外观和行为可以通过添加更多的控件和响应不同的信号和槽来进一步定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值