今天主要要来提AlertDialog(对话视窗),包含像是通知、基本的功能选择,AlertDialog的应用算是非常常见,我把它分成两个部分来提并实作,一种是一般的AlertDialog视窗、另一种是自定义View的AlertDialog视窗,首先先看到一般的对话视窗。
程序码的部分:
AlertDialog.Builder alert1 = new AlertDialog.Builder(MainActivity.this);//新建alert1对话盒在页面上
alert1.setTitle("Title标题");//设置标题
alert1.setMessage("Message内容");//设置内容
alert1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
//alertdialog 确定按钮
@Override
public void onClick(DialogInterface dialog, int which) {
//要做的事 没东西的话按了也会关闭
}
});
alert1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
//alertdialog 取消按钮
@Override
public void onClick(DialogInterface dialog, int which) {
//要做的事
}
});
alert1.setNeutralButton("中立", new DialogInterface.OnClickListener() {
//alertdialog 中立按钮
@Override
public void onClick(DialogInterface dialog, int which) {
//要做的事
}
});
alert1.show();//将设置的内容显示
首先第一步是新增对话盒,然後接下来常见的包含:设置标题(setTitle)、设置内容(setMessage)、另外可以设置的三颗按钮(确定positive、取消Negative、Neutral)以及.setCancelable(True False)方法,可以用来设置能不能使用返回键功能,另外如果要控制关不关闭视窗则需要另外宣告AlertDialog,大致上可以改成以下这个样子。
AlertDialog.Builder alert1 = new AlertDialog.Builder(MainActivity.this);//新建alert1对话盒在页面上
AlertDialog SCN;
alert1.setTitle("Title标题");//设置标题
alert1.setMessage("Message内容");//设置内容
alert1.setPositiveButton("确定",null);
alert1.setNeutralButton("中立", null);
alert1.setNegativeButton("取消", null);
SCN=alert1.show();//将设置的内容显示
SCN.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();
}
});
SCN.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"中立",Toast.LENGTH_SHORT).show();
}
});
SCN.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();
SCN.dismiss();
}
});
因为在AlertDialog.Builder内没有可以关闭对话视窗的方法,所以要透过宣告AlertDialog,将Builder指向AlertDialog来做使用dismiss的方法,当然也可以在里面新增EditText,但设超过1个就慢慢的会有些问题,所以就需要提刚刚所说的自定义view的AlertDialog了,然後可以在最外面设按钮来触发AlertDialog来观察结果。
程序码的部分:
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);//取得activity提供的layoutinflater
View alert = layoutInflater.inflate(R.layout.alert_page, null);//动态载入alertdialog页面生成view(可套用对应布局)
AlertDialog.Builder scn = new AlertDialog.Builder(MainActivity.this);//新建scn对话盒在页面上(this)
scn.setView(alert);//alertdialog使用view布局(R.layout.alert_page)
AlertDialog SCN1;//因为AlertDialog.Builder内没有关闭视窗的方法,而AlertDialog有dismiss方法 则先宣告SCN1
SCN1 = scn.show();//builder指向alertdialog
EditText y=alert.findViewById(R.id.editTextNumberSigned);//用view绑元件
EditText d=alert.findViewById(R.id.editTextNumberSigned2);
Button b=alert.findViewById(R.id.button3);//view自定义的确认按钮
Button b1=alert.findViewById(R.id.button4);//view自定义的取消按钮
TextView Error = alert.findViewById(R.id.textView3);//如果未填毕会显示未填完资料的字串
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String year=y.getText().toString();
String date=d.getText().toString();
if (!(("".equals(year.trim())) || ("".equals(date.trim())))) { //资料未填毕不进入if
SCN1.dismiss();
AlertDialog.Builder scn2 = new AlertDialog.Builder(MainActivity.this);//建第二个视窗检视传入的结果
scn2.setTitle("Today");//使用一般的AlertDialog语法
scn2.setMessage("今年是" + year + "年\n"
+ "日期是" + date);
scn2.setPositiveButton("确定", null);//无监听者 按下去会关闭视窗不做任何事
scn2.setNegativeButton("取消", null);
scn2.show();
}
else
Error.setText("有资料尚未填入");
}
});
b1.setOnClickListener(new View.OnClickListener() { //取消按钮监听
@Override
public void onClick(View v) {
SCN1.dismiss();//将此弹跳视窗关闭
}
});
首先你可以先新增一个你想要设计在alertdialog上面的布局(layout),并透过宣告LayoutInflater取得这个activity的layoutInflater之後,使用layoutInflater.inflate的方法来动态载入那个布局生成view,最後透过setView(view)来套用刚刚生成的view,就会显示对应布局档的元件和布局了(整个视窗都可自定义),另外也可以透过view+findViewById来绑元件,也可以在里面再新增一个弹跳视窗等,我这边主要是写第一个弹跳视窗填入资料,第二个弹跳视窗显示资料,其他就是自己写的一些判断,接下来放上今天的成果。
在 3.0 那一篇,笔者介绍时间中断与简单的实作。也许也有读者注意到了不太顺畅的部分,那就是直接跳跃...
Q1. vim 是什麽? 简单来说, vim 是一种纯文字编辑器,是从 vi 发展出的增强版,而 v...
前言: 简单介绍 kotlin的基本语法和基本型态。 大纲: 变数宣告 变数名称 : 变数型态 = ...
接下来的 Draft 与 Slate 就是提供建立编辑器环境为主的 Framework Libra...
环境 Windows 10 1709 简介 後门 当入侵者成功取得某台机器的权限後,可能会希望之後仍...