Dialog的基本方法

//创建Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

//设置标题图标
builder.setIcon(R.drawable.ic_launcher);

//设置标题
builder.setTitle("这是一个对话框");

//设置信息
builder.setMessage("是否要跳转?");

//确定按钮
setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)

//取消按钮
setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)

//忽略
setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)

//显示对话框
show();

系统样式

1.下拉列表

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
         builder.setIcon(R.drawable.ic_launcher);
         builder.setTitle("选择一个城市");
         //下拉列表的数据源
         final String[] cities = {"北京", "上海", "广州", "深圳", "杭州"};
         builder.setItems(cities, new DialogInterface.OnClickListener(){
             @Override
             public void onClick(DialogInterface dialog, int which){
                 Toast.makeText(MainActivity.this, "你选择的城市为:" + cities[which], Toast.LENGTH_SHORT).show();
             }
 });
 builder.show();

2.单选框列表

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle("请选择性别");
        final String[] sex = {"男", "女"};
        //第二个参数指定默认哪个单选框被勾中
        builder.setSingleChoiceItems(sex, 1, new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which){
                   Toast.makeText(MainActivity.this, "性别为:" + sex[which], Toast.LENGTH_SHORT).show();
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which){

            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which){

            }
       });
builder.show();

3.多选框列表

String str;AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("选择你想看的电视剧");
final String[] hobbies = {"廷禧攻略", "扶摇", "香蜜沉沉烬如霜", "如懿传"};
//第二个参数代表哪几个选项被选择,需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,如果null表示都不选
builder.setMultiChoiceItems(hobbies, null, new DialogInterface.OnMultiChoiceClickListener(){
  @Override
  public void onClick(DialogInterface dialog, int which, boolean isChecked){
      if(isChecked){
        str.append(hobbies[which] + ", ");
      }
      Toast.makeText(MainActivity.this, "选择的是:" + str.toString(), Toast.LENGTH_SHORT).show();
    }
 });
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
  @Override
  public void onClick(DialogInterface dialog, int which){

    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
  @Override
  public void onClick(DialogInterface dialog, int which){

    }
});
builder.show();

4.等待对话框

ProgressDialog waitingDialog= new ProgressDialog(MainActivity.this);
waitingDialog.setTitle("等待加载中,请稍后...");
waitingDialog.setMessage("等待中...");
waitingDialog.setIndeterminate(true);//采用不确定式的进度条
waitingDialog.setCancelable(false);//点击外部不取消对话框
waitingDialog.show();

5.进度条对话框

int MAXPD = 100;
ProgressDialog progressDialog =  new ProgressDialog(MainActivity.this);
progressDialog.setProgress(0);//设置默认值
progressDialog.setTitle("正在下载");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//进度条样式
progressDialog.setMax(MAXPD);//设置最大值
progressDialog.show();

自定义Dialog

1.继承Dialog

public class CustomDialog extends Dialog {
//标题
protected TextView hintTv;

//左边按钮
protected Button doubleLeftBtn;

//右边按钮
protected Button doubleRightBtn;

//输入框
public EditText editText;

public CustomDialog(Context context) {
    super(context, R.style.CustomDialogStyle);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setCancelable(false);  // 是否可以撤销
    setContentView(R.layout.dialog_custom);

    hintTv = findViewById(R.id.tv_common_dialog_hint);
    doubleLeftBtn =  findViewById(R.id.btn_common_dialog_double_left);
    doubleRightBtn = findViewById(R.id.btn_common_dialog_double_right);
    editText = findViewById(R.id.et_common_dialog);
}

//置右键文字和点击事件
public void setRightButton(String rightStr, View.OnClickListener clickListener) {
    doubleRightBtn.setOnClickListener(clickListener);
    doubleRightBtn.setText(rightStr);
}

//设置左键文字和点击事件
public void setLeftButton(String leftStr, View.OnClickListener clickListener) {
    doubleLeftBtn.setOnClickListener(clickListener);
    doubleLeftBtn.setText(leftStr);
}

//设置提示内容
public void setHintText(String str) {
    hintTv.setText(str);
    hintTv.setVisibility(View.VISIBLE);
}

//给两个按钮 设置文字
public void setBtnText(String leftStr, String rightStr) {
    doubleLeftBtn.setText(leftStr);
    doubleRightBtn.setText(rightStr);
}

}

2.自定义Style

<style name="CustomDialogStyle" parent="@android:style/Theme.Dialog">
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>

        <!-- 背景透明 -->
        <item name="android:windowBackground">@color/transparent</item>

        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>

        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsFloating">true</item>

        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">false</item>

        <!-- 背景模糊 -->
        <item name="android:windowContentOverlay">@null</item>

        <!-- 允许对话框的背景变暗 -->
        <item name="android:backgroundDimEnabled">true</item>

        <!-- 字体颜色 -->
        <item name="android:textColor">@color/white</item>
        <item name="android:editTextColor">@color/white</item>
 </style>

3.自定义布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ll_common_dialog_layout"
    android:layout_width="500dp"
    android:layout_height="250dp"
    android:layout_margin="5dp"
    android:background="@drawable/background_info"
    android:orientation="vertical"
    android:gravity="center">

    <!--提示信息-->
    <TextView
        android:id="@+id/tv_common_dialog_hint"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@color/white"
        android:textSize="27sp"/>
    <EditText
        android:id="@+id/et_common_dialog"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:textColor="@color/back"
        android:inputType="text|textNoSuggestions"
        tools:ignore="LabelFor"
        android:hint="请输入密码"/>

    <!--底部按钮-->
    <LinearLayout
        android:id="@+id/ll_common_dialog_double"
        android:layout_width="360dp"
        android:layout_height="60dp"
        android:layout_margin="20dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_common_dialog_double_left"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/btnselector"
            android:gravity="center"
            android:textColor="@color/white"
            android:textSize="27dp"/>

        <Button
            android:id="@+id/btn_common_dialog_double_right"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/btnselector"
            android:gravity="center"
            android:textColor="@color/white"
            android:textSize="27dp"/>
    </LinearLayout>
</LinearLayout>

4.ipad隐藏底部虚拟按键

//弹出dialog时隐藏底部虚拟按键
dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
dialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
    @Override
    public void onSystemUiVisibilityChange(int visibility) {
        int uiOptions =View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
        if (Build.VERSION.SDK_INT >= 19) {
            uiOptions |= 0x00001000;
        } else {
            uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
        }
        dialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
    }
});

5.使用自定义Dialog

CustomDialog dialog = new CustomDialog(this);
dialog.setHintText("请输入密码");
dialog.setLeftButton("取消", new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           dialog.dismiss();
       }
});
dialog.setRightButton("确定", new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
});
dialog.show();

Android Dialog对话框的更多相关文章

  1. Android Dialog对话框的七种形式的使用

    参考资料:http://www.oschina.net/question/54100_32486 注:代码进行了整理 在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询 ...

  2. Android Dialog使用举例

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一 ...

  3. Android控件——7种形式的Android Dialog使用举例(转载)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一 ...

  4. 8种形式的Android Dialog使用举例

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一 ...

  5. Android UI系列-----Dialog对话框

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  6. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  7. android从Dialog对话框中取得文本文字

    android中Dialog对话框获取文本文字,只需要使用editor的getText方法就可以获得,示例如下:final EditText et = new EditText(this); et.s ...

  8. Android之UI--打造12种Dialog对话框

    最近有空,来把app中常用到的Dialog对话框写一篇博客,在app中很多地方都会用到Dialog对话框,今天小编我就给大家介绍Dialog对话框. 先看看效果图: 12种,可根据需求选择,上图可知, ...

  9. Android学习(十九)Dialog对话框

    一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...

随机推荐

  1. HTML百宝箱(1从0开始)

    标准格式(XHTML) l   元素必须正确嵌套 l   元素必须始终关闭 l   元素名和属性名必须小写 l   文档必须有且仅有一个根元素 l   属性值必须使用双引号括起来 l   声明文档为标 ...

  2. 如何开会——高效会议八项原则

    引子 今天看到一段有趣的话,忍不住记录下来吧! 1. 任何事情只要能开会解决的,一定要开会解决,这多威风,多热闹啊. 2. 会前千万不要准备什么议程,这样开会就会惊喜多多,会议一定低效. 3. 会前千 ...

  3. Spring Cloud微服务中网关服务是如何实现的?(Zuul篇)

    导读 我们知道在基于Spring Cloud的微服务体系中,各个微服务除了在内部提供服务外,有些服务接口还需要直接提供给客户端,如Andirod.IOS.H5等等. 而一个很尴尬的境地是,如果直接将提 ...

  4. Struts2框架(4)---Action类访问servlet

    Action类访问servlet Action类有三种方式servlet: (1)间接的方式访问Servlet API  ---使用ActionContext对象 (2)  实现接口,访问Action ...

  5. 微软新动向之Android和IOS应用 visual studio 2015 Cordova[原创]

    自萨蒂亚·纳德拉(Satya Nadella)上任微软CEO以来,可谓是惊喜不断,仿佛让世界尤其是我们.net程序员心中又燃起了希望.先是免费提供 iOS 版和安卓版 Office:然后在 xbox ...

  6. JavaScript和Ajax部分(5)

    41. jQuery中的load方法一般怎么用的? 答:load方法一般在 载入远程HTML 代码并插入到DOM中的时候用通常用来从Web服务器上获取静态的数据文件. 如果要传递参数的话,可以使用$. ...

  7. vue-14-less 语法的使用

    vue-15-rem-less 在计算手机端页面的时候, 使用rem和less的方式, 可以方便的设置需要的大小等 1, 在index.html中添加rem的script 代码 在head中添加 &l ...

  8. 【原创+整理】简述何为调用约定,函数导出名以及extern C

    何为调用约定 调用约定指的是函数在调用时会按照不同规则,翻译成不同的汇编代码.这和参数的压栈顺序和栈的清理方式相关,也就是说不同的调用约定,这些方式会做相应改变.一般编译器是以默认的调用约定编译一份代 ...

  9. 第一册:lesson thirty seven。

    原文: Making a bookcase. A:You are working hard,George. What are you doing . B:I am making a bookcase. ...

  10. C#对接----韵达开发平台--取电子面单

    引子 最近根据业务的一些需求,所以放弃从快递鸟对接去电子面单,转而直接对接韵达开发平台:http://open.yundasys.com/ ,中间踩了一些坑,借此做了一个小案例给大伙,瞅瞅,若有需改进 ...