Dialog
Created At :
Views 👀 :
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); 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