Dialog

Dialog控件的使用

Dialog方法

1
2
3
4
5
6
7
8
9
10
.setTitle() //设置标题
.setIcon ()//设置图标
.setMessage ()//设置要显示的内容
.setItems//设置在对话框中显示的项目列表
.setView//设置自定义的对话框样式
.setPositiveButton ()//设置确定按钮
.setNegativeButton ()//设置取消按钮
.setNeutralButton ()//设置中立按钮
.setSingleChoiceItems//单选框
.setMultiChoiceItems//复选框

1.普通对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog;
dialog= new AlertDialog.Builder(this).setTitle("Dialog对话框").setMessage("是否退出").setIcon(R.mipmap.ic_launcher).setPositiveButton("yes",null).setNegativeButton("no",null).create();
dialog.show();
}
}

其中setPositivaButton和setNegativeButton的第二个参数为是否设置监听,没有则是”null”,最后要用creat方法创建对话框,然后用show方法显示

2.单选对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog;
new AlertDialog.Builder(this).setTitle("单选对话框").setIcon(R.mipmap.ic_launcher).setSingleChoiceItems(new String[]{"male","female"},0,new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog ,int which){

}
}).setPositiveButton("Confirm",null).show();
}
}

在上述代码中使用了setSingleChoiceItems方法,该方法需要三个参数,第一个参数需要建立一个数组,作为显示的选项;第二个参数为是否默认选中,”0“表示默认选中第一个,如果默认未选中,则填”-1“;第三个参数为设立监听,允许对话框被点击

3.多选对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog;
new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("Choose Your Love").setMultiChoiceItems(new String[]{"football","basketball","baseball"},null,null).setPositiveButton("Confirm",null).show();
}
}

使用setMultiChoiceItems,同样需要三个参数,第一个参数同样新建数组用于选项显示,第二个是boolean数组,用来判断哪些选项需要勾选,例如,new boolean[]{true,true,true},实现默认全部勾选,第三个设置监听

4.进度条对话框

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
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog; //声明
ProgressDialog prodialog; //构建实例
prodialog = new ProgressDialog(this);
prodialog.setTitle("Progress");
prodialog.setIcon(R.mipmap.ic_launcher);
prodialog.setMessage("Plz wait");
prodialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//ProgressDialog.STYLE_HORIZONTAL
prodialog.show();
}
}

进度条对话框大体和普通对话框类似,可以用setProgressStyle方法设置进度条样式,如水平/圆形

消息对话框(Toast)

Toast是Android系统提供的轻量级信息提醒机制,用于向用户提示即时信息,Toast对话框会显示在应用程序的最上层,显示一段时间后会自动消失,因此只起到提示的作用,多用于触发事件的监听中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog dialog;
Toast.makeText(this,"Hello,N1ng",Toast.LENGTH_SHORT).show();
}
}

通过makeText方法实例化一个Toast对象,其中第一个参数为context(上下文),第二个参数为显示内容,第三个参数为显示时间,一般用常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG控制,前者显示时间短,后者显示时间长

自定义对话框

1.创建布局

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#ffffff">
<TextView
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/tv"
android:text="自定义对话框"
android:textSize="18sp"
android:textColor="#ffffff"
android:background="#0080ff"
android:layout_gravity="center"
android:visibility="visible"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/l1_content"
android:layout_gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tv_msg"
android:layout_gravity="center"
android:minHeight="100dp"
android:paddingBottom="15dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="15dp"
android:textColor="#ff6666"
android:textSize="16sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_gravity="bottom"
android:background="#e0e0e0"
android:orientation="horizontal">
<Button
android:layout_width="114dp"
android:layout_height="40dp"
android:id="@+id/btn_ok"
android:layout_marginLeft="20dp"
android:background="#ff8000"
android:text="Confirm"
android:textSize="15sp"
android:layout_gravity="center"
android:textColor="#ffffff"/>
<Button
android:layout_width="114dp"
android:layout_height="40dp"
android:id="@+id/btn_no"
android:layout_gravity="center"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:text="cancel"
android:background="#d0d0d0"
android:textColor="#666666"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</FrameLayout>

2.创建自定义对话框

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.example.dialogtest;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;

public class MyDialog extends Dialog {
private String dialogName;
private TextView tvMsg;
private Button btnOk;
private Button btnCancel;
public MyDialog(Context context,String dialogName){
super(context);
this.dialogName=dialogName;
}//构造方法

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题
setContentView(R.layout.my_dialog);
tvMsg=(TextView) findViewById(R.id.tv_msg);
btnOk=(Button) findViewById(R.id.btn_ok);
btnCancel=(Button) findViewById(R.id.btn_no);
tvMsg.setText(dialogName);
btnOk.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {

}

public void OnClick(View v){

}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();//关闭对话框
}
});
}
}

创建一个MyDialog类继承于Dialog,初始化控件并设置按钮的点击事件

3.使用自定义对话框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.example.dialogtest;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_dialog);
MyDialog myDialog=new MyDialog(this,"i'm N1ng");
myDialog.show();
}
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3049155267@qq.com

💰

×

Help us with donation