• Android笔记(七十) AlertDialog


          alertdialog可以在当前界面中弹出一个对话框,这个对话框在界面所有元素之上,可以屏蔽掉其他控件的交互能力,因此alertdialog常用于一些重要的内容警告。

          使用AlertDialog.Builder创建对话框需要了解以下几个方法:

          setTitle :为对话框设置标题
          setIcon :为对话框设置图标
          setMessage:为对话框设置内容
          setView : 给对话框设置自定义样式
          setItems :设置对话框要显示的一个list,一般用于显示几个命令时
          setMultiChoiceItems :用来设置对话框显示一系列的复选框
          setNeutralButton    :普通按钮

          setPositiveButton   :给对话框添加"Yes"按钮
          setNegativeButton :对话框添加"No"按钮

          setCancelable:点击其他部位是否可以取消alertdialog,默认为true

          setSingleChoiceItems:设置类似于单选框一样的list
          create : 创建对话框
          show :显示对话框

    普通的AlertDialog:

    package com.example.alertdialogdemo;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button bt;
        private TextView tv;
        private Context mContext;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mContext = MainActivity.this;
    
            bt = (Button) findViewById(R.id.bt);
            tv = (TextView) findViewById(R.id.tv);
            bt.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
                    dialog.setCancelable(false);
                    dialog.setIcon(R.drawable.remind);
                    dialog.setTitle("This is title!");
                    dialog.setMessage("This is Message!");
                    dialog.setPositiveButton("YES", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(mContext, "YES→" + which, Toast.LENGTH_SHORT).show();
                            changeText(which);
                        }
                    });
                    dialog.setNegativeButton("NO", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(mContext, "NO→" + which, Toast.LENGTH_SHORT).show();
                            changeText(which);
                        }
                    });
    
                    dialog.show();
                }
            });
        }
    
        public void changeText(int which) {
            if (which == -1) {
                tv.setText("您选择的是YES!");
            } else if (which == -2) {
                tv.setText("您选择的是NO!");
            }
        }
    }

    运行结果:

      

    类似ListView的AlertDialog

    package com.example.alertdialogdemo;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button bt;
        private TextView tv;
        private Context mContext;
        private String[] phones = { "三星", "苹果", "小米", "魅族", "锤子", "华为", "中兴" };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext = MainActivity.this;
            bt = (Button) findViewById(R.id.bt);
            tv = (TextView) findViewById(R.id.tv);
            bt.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
                    dialog.setCancelable(true);
                    dialog.setIcon(R.drawable.phone);
                    dialog.setTitle("选择你喜欢的手机");
                    dialog.setItems(phones, new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            changeText(which);
                        }
                    });
                    dialog.show();
                }
            });
        }
    
        public void changeText(int which) {
            tv.setText("您选择的手机是: " + phones[which]);
        }
    }

    运行结果:

    单选AlertDialog

    package com.example.alertdialogdemo;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button bt;
        private TextView tv;
        private Context mContext;
        private String[] sex = { "男生", "女生", "雌雄同体" };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mContext = MainActivity.this;
    
            bt = (Button) findViewById(R.id.bt);
            tv = (TextView) findViewById(R.id.tv);
            bt.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
                    dialog.setCancelable(true);
                    dialog.setIcon(R.drawable.phone);
                    dialog.setTitle("你的性别:");
                    // 第二个参数是默认选择位置
                    dialog.setSingleChoiceItems(sex, 0, new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            changeText(which);
                        }
                    });
                    dialog.setPositiveButton("OK", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                        }
                    });
                    dialog.show();
                }
            });
        }
    
        public void changeText(int which) {
            tv.setText("您的性别是: " + sex[which]);
        }
    }

    运行结果:

    多选AlertDialog

    package com.example.alertdialogdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.content.DialogInterface.OnMultiChoiceClickListener;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
        private Button bt;
        private TextView tv;
        private Context mContext;
        private String[] hobby = { "看电影", "看书", "上网", "篮球", "足球", "游泳", "逛街", "羽毛球" };
        private List<String> hobbyList;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mContext = MainActivity.this;
    
            hobbyList = new ArrayList<String>();
    
            bt = (Button) findViewById(R.id.bt);
            tv = (TextView) findViewById(R.id.tv);
            bt.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
                    dialog.setCancelable(true);
                    dialog.setIcon(R.drawable.heart);
                    dialog.setTitle("你的性别:");
    
                    dialog.setMultiChoiceItems(hobby, null, new OnMultiChoiceClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            hobbyList.add(hobby[which]);
    
                        }
                    });
    
                    dialog.setPositiveButton("OK", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            changeText();
                        }
                    });
                    dialog.show();
                }
            });
        }
    
        public void changeText(int which) {
    
        }
    
        public void changeText() {
            String str = "";
    
            for (int i = 0; i < hobbyList.size(); i++) {
                str = hobbyList.get(i) + " " + str;
            }
    
            tv.setText("您的爱好有: " + str);
        }
    }

    运行结果:

    自定义AlertDialog

    MainActivity.java

    package com.example.alertdialogdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    @SuppressLint("NewApi")
    public class MainActivity extends Activity {
    
        private Button bt;
        private TextView tv;
        private Context mContext;
        private View view;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mContext = MainActivity.this;
            bt = (Button) findViewById(R.id.bt);
            tv = (TextView) findViewById(R.id.tv);
            bt.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
                    view = LayoutInflater.from(mContext).inflate(R.layout.custom_view_dialog, null);
                    dialog.setCancelable(true);
                    dialog.setTitle("你的身高:");
                    dialog.setView(view);
                    dialog.setPositiveButton("OK", new OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            changeText();
                        }
                    });
                    dialog.show();
                }
            });
        }
        public void changeText() {
            EditText et = (EditText) view.findViewById(R.id.height);
            String height = et.getText().toString().trim();
            tv.setText("身高:" + height + " cm");
        }
    }

    custom_view_dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
    
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ruler" />
    
        <EditText
            android:id="@+id/height"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="cm" />
    
    </LinearLayout>

    运行效果:

  • 相关阅读:
    js之iframe子页面与父页面通信
    PHP安全编程:HTTP请求欺骗
    PHP安全编程:防止SQL注入
    PHP多种序列化/反序列化的方法
    empty(),isset()与is_null()的实例测试
    &nbsp|&quot|&amp|&lt|&gt等html字符转义
    手把手叫你SQL注入攻防(PHP语法)
    HTTP协议详解
    Cache缓存机制与文件缓存原理PHP2
    数据变成了真正的生产资料,而且是人类第一次没有依赖大自然,单纯依靠自身行为获得的生产资料。
  • 原文地址:https://www.cnblogs.com/xs104/p/5093613.html
Copyright © 2020-2023  润新知