#傻逼安卓写的我自闭了…
#想起来上学期组里竟然写过这东西…连抄带查搞了半天才搞明白…
在安卓中默认的对话框只能接受单一文字输入,如果想要支持输入多种类型的内容的话必须使用自定义的layout
首先,我们先在主函数中获取layout并传入构造函数中
1 2 3 4 5 |
public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); ConstraintLayout constraint = (ConstraintLayout) getLayoutInflater().inflate(R.layout.dialogs, null); AlertView.addClass(constraint,builder); } |
在构造函数中,只需要调用builder的setView方法并把自己的自定义layout传入其中即可使用自己的layout(我在这里使用的是constraintlayout,不确定其他layout可不可行).
与此同时,我们还可以同时调用setTitle,setIcon等方法对该dialog进行美化.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
public class AlertView { public static void addClass(ConstraintLayout constraint, AlertDialog.Builder builder) { builder.setTitle("Add new class"); builder.setIcon(R.drawable.ic_action_p1); builder.setView(constraint); final EditText edit1 = constraint.findViewById(R.id.old); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final String old = edit1.getText().toString(); MainActivity.clist.add(old); } }); builder.setNeutralButton("haha?", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); //builder.setCancelable(true); builder.create().show(); return; } } |
注意到在dialogbuilder中有3个方法,这可以设置该dialog中3个不同的按钮,我们可以对三个按钮设置不同的点击事件,可以方便执行返回或暂存等操作(这里只写了一个).
最终成果如下图: #一眼就能看出来我是哪抄的了吧