android中的dialog 警告对话框,选择对话框,和一些自定义的对话框

继承Dialog,重写OnCreate和构造方法,
在onCreate中setContentView,通过findViweById获取组件
通过样式修改属性
1.
2. true
3. true
4.

AlertDialog

3个区域
1. title icon
2. message,item,view,adapter,多选单选。
3. 中立,积极,消极三个Button
使用Builder模式
1. AlertDialog.Builder builder = new AlertDialog.Builder(this);
2. buidler.setXXX().setXXX();
3. AlertDialog dialog = builder.create();
4. dialog.show();
Dialog的属性
setCancelable 设置能否触摸到dialog外部时关闭对护框
setOnDismissListener 设置关闭时的监听方法

一个示例如下:

这里写图片描述

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void dialog1(View v) {
        // 创建对象
        MyDialog dialog = new MyDialog(this);
        // 所有的弹出框都使用show方法来展示
        dialog.show();
        // 所有的对话框都使用dismiss来关闭
        // dialog.dismiss();
    }

    public void dialog2(View v) {
        // 警告对话框
        // 创建
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 设置属性
        builder.setTitle("提示框");
        builder.setIcon(R.drawable.ic_launcher);
        // 如果只是展示一个文本,只要设置了Message 就只会显示message
        builder.setMessage("我是用来显示Message的");
        // 积极的按钮 确定
        // 可以连续.来调用方法
        builder.setPositiveButton("ok", new OnClickListener() {

            // 按钮上面的which永远返回-1
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "按了ok键", Toast.LENGTH_SHORT)
                        .show();
            }
        }).setNegativeButton("cancel", null)
        // 中立的
                .setNeutralButton("yes", null);
        // 生成部分
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };

    public void dialog3(View v) {
        // 显示一个菜单的选项
        // 匿名的类去创建
        new AlertDialog.Builder(this).setTitle("菜单")
                .setItems(array, new OnClickListener() {

                    // which 代表点击的第几项
                    // item点击后自动关闭,不需要按钮
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, array[which],
                                Toast.LENGTH_SHORT).show();
                    }
                })
                // 有的时候不需要button
                .create().show();
    }

    // 是哪个被选中
    int choice;

    public void dialog4(View v) {
        // 显示一个单选的对话框
        // 不会关闭对护框
        new AlertDialog.Builder(this)
                .setTitle("单选对话框")
                // 如果给了Message,其他的content部分会被替换
                // .setMessage("信息")
                // 0代表默认哪一个被选中
                .setSingleChoiceItems(array, 0, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        choice = which;
                    }
                }).setNegativeButton("取消", null)
                .setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, array[choice],
                                Toast.LENGTH_SHORT).show();
                    }
                }).create().show();
    }

    public void dialog5(View v) {
        final List<String> list = new ArrayList<String>();
        list.add("体育");
        list.add("舞蹈");
        // 多选对话框
        boolean[] checkedItems = { false, true, true, false };
        new AlertDialog.Builder(this)
                .setTitle("多选对话框")
                .setMultiChoiceItems(array, checkedItems,
                        new OnMultiChoiceClickListener() {
                            // 点击后 不会关闭dialog
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which, boolean isChecked) {
                                if (isChecked) {
                                    list.add(array[which]);
                                } else {
                                    list.remove(array[which]);
                                }
                            }
                        }).setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, list.toString(),
                                Toast.LENGTH_SHORT).show();

                    }
                }).create().show();
    }

    public void dialog6(View v) {
        // 设置适配器
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, array);
        new AlertDialog.Builder(this).setTitle("适配器")
                .setAdapter(adapter, new OnClickListener() {
                    // 点完就关闭,不需要button
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, array[which],
                                Toast.LENGTH_SHORT).show();
                    }
                }).create().show();
    }

    public void dialog7(View v) {
        final EditText et = new EditText(this);
        et.setHint("请输入密码");
        new AlertDialog.Builder(this).setTitle("自定义对话框").setView(et)
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,
                                "你输入的密码是:" + et.getText().toString(),
                                Toast.LENGTH_SHORT).show();
                    }
                }).create().show();
    }

    public void dialog8(View v) {
        // 关闭对话框
        View layout = getLayoutInflater()
                .inflate(R.layout.dialog_dismiss, null);
        TextView finish = (TextView) layout.findViewById(R.id.finish);
        final AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("可以关闭的对护框").setView(layout).create();
        finish.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        // 不允许关闭
        // dialog.setCancelable(false);
        dialog.show();
        // 有的时候用户可能点到了外部,dialog直接关闭了,而程序不知道。
        dialog.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss(DialogInterface dialog) {
                // 只要关闭都会调用
                Toast.makeText(MainActivity.this, "关闭", Toast.LENGTH_SHORT)
                        .show();
            }
        });
    }
}
自已定义的一个dialog的类
public class MyDialog extends Dialog {

    // 必须要给构造方法
    public MyDialog(Context context) {
        // 使用主题来修改Dialog的样式
        super(context, R.style.DialogTheme);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_progress);
    }

    /**
     * 一个Activity或者一个Dialog刚刚出现在用户面前
     */
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
    }
}

主要的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog1"
        android:text="自定义Dialog" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog2"
        android:text="警告对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog3"
        android:text="菜单对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog4"
        android:text="单选对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog5"
        android:text="多选对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog6"
        android:text="适配器对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog7"
        android:text="自定义对话框" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="dialog8"
        android:text="关闭对话框" />

</LinearLayout>

自定义的dialog的dialog_progress.xml

<?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:gravity="center"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>
可以关闭的对话框的dialog_dismiss.xml
<?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="vertical" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入名称" />

    <TextView
        android:id="@+id/finish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="关闭" />

</LinearLayout>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值