FC 3.2.6 关于对话框AlertDialog

  • 确认对话框
  • 单选对话框
  • 多选对话框
  • 列表对话框
  • 自定义对话框

这里,对话框一开始都要实例化一个AlertDialog.Builder对象,然后在它身上set各种属性,有关图标、标题和内容,然后设置每个Dialog的事件。设置好后用Builder的create()方法就能得到一个Dialog,最后把对话框show()出来。

 

确认对话框

setPositiveButton()setNegativeButton()方法添加确定和取消按钮,然后添加对应的事件。

AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setTitle("我是标题");
builder1.setMessage("我是正文");
builder1.setCancelable(false);
builder1.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
    }
});
builder1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "cancel", Toast.LENGTH_SHORT).show();
    }
});
Dialog dialog1=builder1.create();
dialog1.show();

单选对话框

setSingleChoiceItems()为单选对话框设置展示的数据。

final String[] single_data = {"小学", "中学", "大学"};
AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
builder2.setTitle("我是标题");
builder2.setSingleChoiceItems(single_data, 0, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(getApplicationContext(), "你点击了"+single_data[which], Toast.LENGTH_SHORT).show();
    }
});
Dialog dialog2=builder2.create();
dialog2.show();

多选对话框

与单选对话框不同的是 使用setMultiChoiceItems()OnMultiChoiceClickListener

final String[] multi_data = {"玩魔方", "打羽毛球", "跑步"};
AlertDialog.Builder builder3 = new AlertDialog.Builder(MainActivity.this);
builder3.setTitle("你的兴趣");
builder3.setMultiChoiceItems(multi_data, null, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        if (isChecked) {
            Toast.makeText(getApplicationContext(), "你选择了"+multi_data[which], Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(),  "你取消选择了"+multi_data[which], Toast.LENGTH_SHORT).show();
        }
    }
});
Dialog dialog3=builder3.create();
dialog3.show();

列表对话框

列表对话框用setItems()提供数据源。

final String[] list = {"小米","华为","其他"};
AlertDialog.Builder builder4 = new AlertDialog.Builder(MainActivity.this);
builder4.setTitle("你的手机");
builder4.setItems(list, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(getApplicationContext(), "你选择的是" + list[which] + "手机", Toast.LENGTH_SHORT).show();
    }
});
Dialog dialog4=builder4.create();
dialog4.show();

自定义对话框

1、创建布局zidingyi.xml

2、利用LayoutInflater类将刚刚自定义的布局动态加载到当前布局得到一个View,再把这个View用Builder的setView()传入到对话框布局里,还可以为布局里的控件添加事件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是自定义的哦" />
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="他真的是自定义的" />
</LinearLayout>
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.zidingyi, null);
Button button = view.findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(getApplicationContext(), "自定义的哦", Toast.LENGTH_SHORT).show();
    }
});
AlertDialog.Builder builder5 = new AlertDialog.Builder(this);
builder5.setTitle("自定义的");
builder5.setView(view);
Dialog dialog5 = builder5.create();
dialog5.show();

最近一次编辑于2018.11.19 16:03

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值