Android MaterialDialog 微调器

Android MaterialDialog Spinner

我正在使用 MaterialDialog.Builder 来显示对话框。 我为我的对话框设置了一个 customView。

在我的布局中,我有一个微调器,我想在显示对话框时从我的 sqlite 数据库中填充它。

回调函数仅在我按下这些按钮时起作用。是否有我可以在对话框显示之前使用的功能,并使用我设置的布局来附加微调器?

我的代码是这样的:

boolean wrapInScrollView = true;
new MaterialDialog.Builder(mContext)
.customView(layout, wrapInScrollView)
.autoDismiss(false)
.negativeText(R.string.text40)
.positiveText(buton)
.callback(new MaterialDialog.ButtonCallback() { ....})
.build()
.show();

谢谢

假设你有 LinearLayout 并且里面有 Spinner:

  • 自定义xml文件名是"dialogCustom"
  • linearlayout里面的id是"linearLayoutMine"
  • spinner linearlayout 里面的 id 是 "mySpinner"

    MaterialDialog.Builder md=new MaterialDialog.Builder(this);
    
    LayoutInflater factory = LayoutInflater.from(this);
    final View stdView = factory.inflate(R.layout.dialogCustom, null);
    LinearLayout linearLayoutMine (LinearLayout) stdView.findViewById(R.id.linearLayoutMine);
    Spinner spinner = (Spinner) linearLayoutMine.findViewById(R.id.mySpinner);
    
    //Load items to spinner
    
    md.title("myTitle")
      .customView(linearLayoutMine, wrapInScrollView)
      .autoDismiss(false)
      .negativeText(R.string.text40)
      .positiveText(buton)
      .callback(new MaterialDialog.ButtonCallback() { ....})
      .build()
      .show();
    

仅在按下正负按钮时回调。

另一种可能性是将 build() 和 show() 调用分开,并在 build() 之后使用 getCustomView()。

像这样

dlg = new MaterialDialog.Builder(mContext)
    .customView(layout, wrapInScrollView)
    .autoDismiss(false)
    .negativeText(R.string.text40)
    .positiveText(buton)
    .callback(new MaterialDialog.ButtonCallback() { ....})
    .build();


mySpinner = (Spinner)dlg.getCustomView.findViewById(R.id.mySpinner);
// do whatever you need to do with your spinner

// finally show the dialog
dlg.show();

这不一定比 Jemshit 建议的方法更好,只是实现结果的方式不同。