zoukankan      html  css  js  c++  java
  • android学习---Dialog

    Dialog

      Dialog,对话框,一个对话框就是一个小窗口,并不会填满整个屏幕,通常是以模态显示,要求用户必须采取行动才能继续进行剩下的操作。

      Android提供了丰富的对话框支持,它提供了如下4中常用的对话框:

    • AlertDialog:警告对话框,使用最广泛功能最丰富的一个对话框。
    • ProgressDialog:进度条对话框,只是对进度条进行了简单的封装。
    • DatePickerDialog:日期对话框。
    • TimePickerDialog:时间对话框。

      所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自Dialog,其他的几个类均继承自AlterDialog。

    AlertDialog

      AlertDialog继承自Dialog类,对于Android内置的AlterDialog,它可以包含一个标题、一个内容消息或者一个选择列表、最多三个按钮。而创建AlterDialog推荐使用它的一个内部类AlterDialog.Builder创建。使用Builder对象,可以设置AlterDialog的各种属性,最后通过Builder.create()就可以得到AlterDialog对象,如果只是还需要显示这个AlterDialog,一般可以直接使用Builder.show()方法,它会返回一个AlterDialog对象,并且显示它。

      如果仅仅是需要提示一段信息给用户,那么就可以直接使用AlterDialog的一些属性设置提示信息,涉及到的方法有:

    • AlterDialog create():根据设置的属性,创建一个AlterDialog。
    • AlterDialog show():根据设置的属性,创建一个AlterDialog,并且显示在屏幕上。
    • AlterDialog.Builder setTitle():设置标题。
    • AlterDialog.Builder setIcon():设置标题的图标。
    • AlterDialog.Builder setMessage():设置标题的内容。
    • AlterDialog.Builder setCancelable():设置是否模态,一般设置为false,表示模态,要求用户必须采取行动才能继续进行剩下的操作。

      Tips:AlterDialog.Builder的很多设置属性的方法,返回的均是这个AlterDialog.Builder对象,所以可以使用链式方式编写代码,这样更方便。

      当一个对话框调用了show()方法后,展示到屏幕上,如果需要消除它,可以使用DialogInterface接口声明的两个方法,cancel()和dismiss()使对话框取或者消除,这两个方法的作用是一样的,不过推荐使用dismiss()。Dialog和AlterDialog都实现了DialogInterface接口,所以只要是对话框,均可以使用这两个方法来消除对话框。

      

    AlterDialog的按钮

      AlterDialog内置了三个按钮,可以直接使用setXxxButton()方法进行设置,对于一般的对话框,使用三个按钮基本上也够用了,下面是这三个方法的签名:

    • AlterDialog.Builder setPositiveButton(CharSquence text , DialogInterFace.OnClickListener):一个积极的按钮,一般用于“OK”或者“继续”等操作。
    • AlterDialog.Builder setNegativeButton(CharSquence text , DialogInterFace.OnClickListener):一个负面的按钮,一般用于“取消”操作。
    • AlterDialog.Builder setNeutralButton(CharSquence text , DialogInterFace.OnClickListener):一个比较中性的按钮,一般用于“忽略”、“以后提醒我”等操作。

      上面介绍的DialogInterface接口,还提供了一系列的事件响应,这三个按钮均需要传递一个DialogInterFace.OnClickListener接口对象,实现其点击事件的触发,在这个接口中需要实现一个onClick(DialogInterface dialog,int which),dialog为当前触发事件的对话框对象接口,可以直接强制转换为AlterDialog进行操作;which为点击按钮的标识符,是一个整形的数据,对于这三个按钮而言,每个按钮使用不同的int类型数据进行标识:Positive(-1)、Negative(-2)、Neutral(-3)。

      而除了专门为按钮点击实现的DialogInterFace.OnClickListener事件外,DialogInterface还提供了一些其他的事件,供Dialog对象响应,这些事件只是对Dialog声明周期各个状态的响应,一看就明白了,就不再详细讲解了,下面是这几个事件的说明:

    • interface DialogInterface.OnCancelListener:当对话框调用cancel()方法的时候触发。
    • interface DialogInterface.OnDismissListener:当对话框调用dismiss()方法的时候触发。
    • interface DialogInterface.OnShowListener:当对话框调用show()方法的时候触发。
    • interface DialogInterface.OnMultiChoiceListener:当对话框使用多选列表,并且选中的时候触发。

      示例:

    button.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("提示");
                    builder.setMessage("你确定要删除吗?");
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "确定被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setNegativeButton("取消", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setNeutralButton("忽略", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "忽略被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setIcon(R.drawable.ic_launcher);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });

    效果:

    AlterDialog的列表形式

      AlterDialog除了展示一些提示信息,还可以展示一种列表的形式,需要使用到Builder.setItems(CharSequence[] items,DialogInterface.OnClickListener listener)方法进行设置,它需要传递一个CharSequenece类型的数组,以绑定列表的数据,它同样需要传递一个DialogInterface.OnClickListener接口,以响应列表项的点击,而这个接口中onClick方法的which参数,为当前点击触发项的items中的下标。

      示例:

    button2.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    // builder.setMessage("请选择以下城市");//不能设置message的内容
                    builder.setItems(items, new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
    
                }
            });

    效果:

    AlterDialog的单选列表

      AlterDialog还可以使用一种单选的列表样式,使用Builder.setSingleChoiceItems(CharSequenece[] items,int checkedItem,DialogInterface.OnClickListener listener),这个方法具有多项重载,主要是为了应对不同的数据源,items为列表项数组,checkedItem为初始选项,listener为点击响应事件。有时候并不一定需要选中之后就关闭对话框,可以设置两个按钮,用于确定选择。

      示例:

    button3.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    builder.setSingleChoiceItems(items, -1, new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
            });

    效果:

    AlterDialog多选列表

      AlterDialog除了单选列表,还有多选的列表。可以使用Builder.setMultiChoiceItems(CharSequence[] items,boolean[] checkedItems,DialogInterface.OnMultiChoiceClickListener listener),这个方法也同样具有多样重载,对于这个方法,items以一个数组为数据源;checkedItems是默认的选项,因为是多选列表,所以如果设置需要全部设置,如果没有默认选中,则传Null;listener为多选项点击触发事件。

      示例: 

    button4.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    builder.setMultiChoiceItems(items, new boolean[] { false,
                            false, false }, new OnMultiChoiceClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which,
                                boolean isChecked) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
            });

    效果:

    ProgressDialog

      有些时候,只是需要提示用户等待,比如在执行耗时操作等的时候,可以使用进度对话框来显示一个进度信息,提示用户等待,这个时候可以使用ProgressDialog。ProgressDialog的使用方式大部分可以参见ProgressBar,其实就是一个封装了ProgressBar的对话框。

      ProgressDialog有两种显示方式,一种是以一个滚动的环状图标,可以显示一个标题和一段文本内容的等待对话框;另外一种是带刻度的进度条,和常规的进度条用法一致。两种样式通过ProgressDialog.setProgressStyle(int style)设置,可以通过ProgressDialog的两个常量进行设置:STYLE_HORIZONTAL:刻度滚动;STYLE_SPINNER:图标滚动,默认选项。

      对于图标滚动,可以使用两种方式实现,一种是常规的调用构造函数,再设置对应的属性;另外一种是直接使用ProgressDialog的静态方法show(),直接返回一个ProgressDialog对象,并且调用show()方法。

      示例一:

    button5.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    // 第一种方法,使用ProgressDialog构造函数
                    ProgressDialog dialog = new ProgressDialog(MainActivity.this);
                    dialog.setTitle("等待");
                    dialog.setMessage("正在加载");
                    dialog.show();
    
                    // 第二种方法,使用静态的show方法
                    // ProgressDialog.show(MainActivity.this, "等待", "正在加载....",
                    // false,false);
    
                }
            });

    效果:

      示例二:

    button6.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    // 第一种方式
                    // ProgressDialog dialog = new ProgressDialog(MainActivity.this,
                    // ProgressDialog.STYLE_HORIZONTAL);
                    ProgressDialog dialog = new ProgressDialog(MainActivity.this);
                    dialog.setTitle("下载提示");
                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    dialog.setMax(100);
                    dialog.setProgress(20);
                    dialog.show();
                }
            });

    效果:

    AlertDialog自定义样式

      有些时候,Android自带的一些样式设置已经无法满足需求了,那么可以使用自定义样式,自定义个XML布局文件,用这个文件的内容作为AlertDialog的样式展示在屏幕上,这样就可以灵活定制对话框了。对于定制的XML文件,可以使用LayoutInflater.from(Context).inflate(int,ViewGroup)的方式对其进行动态加载,然后使用Builder.setView(View)把加载的视图与Builder对象进行关联,最后正常show()即可。

    新建布局文件(引用子官方文档):

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:background="#FFFFBB33"
            android:contentDescription="@string/app_name"
            android:scaleType="center"
            android:src="@drawable/ic_launcher" />
    
        <EditText
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="16dp"
            android:hint="username"
            android:inputType="textEmailAddress" />
    
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="4dp"
            android:fontFamily="sans-serif"
            android:hint="password"
            android:inputType="textPassword" />
    
    </LinearLayout>

    新建文件CustomDialog.java

    package com.example.android_alertdialog;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    
    public class CustomDialog {
    
        private Context context;
        private Dialog dialog;
    
        public CustomDialog(Context context) {
            this.context = context;
            // TODO Auto-generated constructor stub
            dialog = new Dialog(context);
        }
    
        public void show() {
            View view = LayoutInflater.from(context).inflate(
                    R.layout.custom_dialog, null);
            dialog.setContentView(view);
            dialog.show();
        }
    }
            button7.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    CustomDialog dialog = new CustomDialog(MainActivity.this);
                    dialog.show();
                }
            });

    效果:

    整理实现代码:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:text="多按钮的普通对话框" />
    
        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button2"
            android:layout_below="@+id/button2"
            android:text="列表选择对话框" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button1"
            android:layout_below="@+id/button1"
            android:text="单选列表选择对话框" />
    
        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/button3"
            android:text="多选列表选择对话框" />
    
        <Button
            android:id="@+id/button5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button4"
            android:layout_centerVertical="true"
            android:text="进度条对话框一" />
    
        <Button
            android:id="@+id/button6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/button5"
            android:text="进度条对话框二" />
    
        <Button
            android:id="@+id/button7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/button6"
            android:layout_below="@+id/button6"
            android:text="自定义对话框" />
    
    </RelativeLayout>
    avtivity_main.xml
    package com.example.android_alertdialog;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.content.DialogInterface.OnMultiChoiceClickListener;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button button;
        private Button button2;
        private Button button3;
        private Button button4;
        private Button button5;
        private Button button6;
        private Button button7;
        private final CharSequence[] items = { "北京", "上海", "广州" };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button) this.findViewById(R.id.button1);
            button2 = (Button) this.findViewById(R.id.button2);
            button3 = (Button) this.findViewById(R.id.button3);
            button4 = (Button) this.findViewById(R.id.button4);
            button5 = (Button) this.findViewById(R.id.button5);
            button6 = (Button) this.findViewById(R.id.button6);
            button7 = (Button) this.findViewById(R.id.button7);
            
            button.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("提示");
                    builder.setMessage("你确定要删除吗?");
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "确定被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setNegativeButton("取消", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setNeutralButton("忽略", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "忽略被点击",
                                    Toast.LENGTH_SHORT).show();
                        }
                    });
                    builder.setIcon(R.drawable.ic_launcher);
                    AlertDialog alertDialog = builder.create();
                    alertDialog.show();
                }
            });
    
            button2.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    // builder.setMessage("请选择以下城市");//不能设置message的内容
                    builder.setItems(items, new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
    
                }
            });
    
            button3.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    builder.setSingleChoiceItems(items, -1, new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
            });
    
            button4.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            MainActivity.this);
                    builder.setTitle("请选择以下城市");
                    builder.setMultiChoiceItems(items, new boolean[] { false,
                            false, false }, new OnMultiChoiceClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which,
                                boolean isChecked) {
                            // TODO Auto-generated method stub
                            String select_item = items[which].toString();
                            Toast.makeText(MainActivity.this,
                                    "选择了-->>" + select_item, Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                    builder.setPositiveButton("确定", new OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            dialog.dismiss();
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }
            });
    
            button5.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    // 第一种方法,使用ProgressDialog构造函数
                    ProgressDialog dialog = new ProgressDialog(MainActivity.this);
                    dialog.setTitle("等待");
                    dialog.setMessage("正在加载");
                    dialog.show();
    
                    // 第二种方法,使用静态的show方法
                    // ProgressDialog.show(MainActivity.this, "等待", "正在加载....",
                    // false,false);
    
                }
            });
    
            button6.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    // 第一种方式
                    // ProgressDialog dialog = new ProgressDialog(MainActivity.this,
                    // ProgressDialog.STYLE_HORIZONTAL);
                    ProgressDialog dialog = new ProgressDialog(MainActivity.this);
                    dialog.setTitle("下载提示");
                    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    dialog.setMax(100);
                    dialog.setProgress(20);
                    dialog.show();
                }
            });
    
            button7.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    CustomDialog dialog = new CustomDialog(MainActivity.this);
                    dialog.show();
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }
    MainActivity.java
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:background="#FFFFBB33"
            android:contentDescription="@string/app_name"
            android:scaleType="center"
            android:src="@drawable/ic_launcher" />
    
        <EditText
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="16dp"
            android:hint="username"
            android:inputType="textEmailAddress" />
    
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_marginTop="4dp"
            android:fontFamily="sans-serif"
            android:hint="password"
            android:inputType="textPassword" />
    
    </LinearLayout>
    Custom_dialog.xml
    package com.example.android_alertdialog;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    
    public class CustomDialog {
    
        private Context context;
        private Dialog dialog;
    
        public CustomDialog(Context context) {
            this.context = context;
            // TODO Auto-generated constructor stub
            dialog = new Dialog(context);
        }
    
        public void show() {
            View view = LayoutInflater.from(context).inflate(
                    R.layout.custom_dialog, null);
            dialog.setContentView(view);
            dialog.show();
        }
    }
    CustomDialog.java

    参考文献:http://www.cnblogs.com/plokmju/p/android_dialog.html

  • 相关阅读:
    EOJ2032 判断两个数是否相等
    EOJ2529 强大的lwc
    EOJ 1199 Anagram
    EOJ2530 数字之和
    EOJ2941 在线投票系统
    EOJ2124 Seamild的电梯
    EOJ 1027 邮资的问题
    通过js导入js,通过js导入css
    无意间在我系统中发现的一张图~~~~~
    css系列看过之后让我~~~
  • 原文地址:https://www.cnblogs.com/lea-fu/p/3315705.html
Copyright © 2011-2022 走看看