在android中对话框是一种常见的操作,常见的对话框有下面几种:

以下是xml布局文件:

<LinearLayout 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:orientation="vertical"
tools:context=".MainActivity" > <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click1"
android:text="显示通知对话框" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click2"
android:text="显示单选对话框" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click3"
android:text="显示多选对话框" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click4"
android:text="显示运行进度对话框" /> <Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="click5"
android:text="显示运行进度条对话框" /> </LinearLayout>

实现代码:

显示对话框

	public void click1(View view) {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("显示对话框");
builder.setIcon(R.drawable.ic_launcher);
builder.setMessage("你确定吗?");
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定被点击了", Toast.LENGTH_LONG)
.show(); }
});
builder.setNegativeButton("取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
});
builder.show();
}

显示效果:

显示单选对话框

	public void click2(View view) {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("单选对话框");
final String[] items = new String[] { "条目1", "条目2", "条目3" };
builder.setSingleChoiceItems(items, 1, new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, items[which] + "被选中了",
Toast.LENGTH_LONG).show();
dialog.dismiss();
}
});
builder.show();
}

显示效果:

显示多选对话框

	public void click3(View view) {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("显示多选对话框");
final String[] items = new String[] { "条目1", "条目2", "条目3", "条目4" };
builder.setMultiChoiceItems(items, new boolean[] { true, false, false,
true }, new OnMultiChoiceClickListener() { @Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, items[which] + isChecked,
Toast.LENGTH_LONG).show(); }
});
builder.setNegativeButton("取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
});
builder.show();
}

显示效果:

显示运行进度对话框

	public void click4(View view) {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("提醒");
dialog.setMessage("正在上传中");
dialog.show();
}

显示效果:

显示运行进度条对话框

	public void click5(View view) {
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("载入进度");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.show();
new Thread() {
public void run() {
for (int i = 0; i < 100; i++) {
dialog.setProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
dialog.dismiss();
};
}.start();
}

显示效果:

最后补充一点假设是自己定义dialog的话假设你用的是

dialog.setContentView(R.layout.dialog_wait);那么就没有什么问题。

假设你是通过inflater来创建一个view

dialog.setContentView(view)

这样的方式来设置view的话。会遇到设置的dialog大小无效,view占满整个屏幕的情况。

这个时候就须要在代码中设置view的大小。

 WindowManager.LayoutParams params=dialog.getWindow().getAttributes();
params.width=400;
params.height=400;
dialog.getWindow().setAttributes(params);

自己定义对话框显示在底部

看到非常多应用在分享到第三方平台的时候。屏幕底部显示一个对话框

这样就须要自己定义Dialog的属性了,让dialog显示在屏幕的底部。

    public static void showShareDialog(final Activity activity) {
final AlertDialog dialog = new AlertDialog.Builder(activity).create();
dialog.show(); View view = View.inflate(activity, R.layout.view_dialog_share, null);
TextView tvWeixinFriend = (TextView) view.findViewById(R.id.share_wexin);
tvWeixinFriend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
ShareManager.getInstance().shareToWeixinFriend(activity);
}
});
TextView tvWeixinCircle = (TextView) view.findViewById(R.id.share_pyq);
tvWeixinCircle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
ShareManager.getInstance().shareToWeixinCircle(activity);
}
});
TextView tvWeibo = (TextView) view.findViewById(R.id.share_weibo);
tvWeibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
ShareManager.getInstance().shareToWeibo(activity);
}
});
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
lp.gravity = Gravity.BOTTOM;
dialog.getWindow().setAttributes(lp);
dialog.setContentView(view); }

以下是

view_dialog_share
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/white"
android:orientation="horizontal"
android:paddingBottom="16dp"
android:paddingTop="16dp"> <TextView
android:id="@+id/share_wexin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawablePadding="4dp"
android:drawableTop="@drawable/icon_share_weixin_friend"
android:gravity="center_horizontal"
android:text="微信好友" /> <TextView
android:id="@+id/share_pyq"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawablePadding="4dp"
android:drawableTop="@drawable/icon_share_weixin_circle"
android:gravity="center_horizontal"
android:text="朋友圈" /> <TextView
android:id="@+id/share_weibo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawablePadding="4dp"
android:drawableTop="@drawable/icon_share_weibo"
android:gravity="center_horizontal"
android:text="微博" />
</LinearLayout>

android中的常见对话框的更多相关文章

  1. Android中的常见通信机制和Linux中的通信机制

    Handler Handler是Android系统中的一种消息传递机制,起作用是应对多线程场景.将A进程的消息传递给B线程,实现异步消息处理.很多情况是将工作线程中需要更新UI的操作消息传递给UI主线 ...

  2. Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解

    对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用到了Al ...

  3. Android中如何使用对话框(单选对话框和多选对话框)

    在主XML中声明两个Button,声明Id package com.example.myapplication; import androidx.appcompat.app.AlertDialog; ...

  4. Android中的常见时区

    方法: private void printTimeZone(){ String[] ids= TimeZone.getAvailableIDs(); for (int i = 0; i < i ...

  5. (转载)Android开发——Android中常见的4种线程池(保证你能看懂并理解)

    0.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用 ...

  6. Android开发——Android中常见的4种线程池(保证你能看懂并理解)

    0.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用 ...

  7. [Android]GOF23种设计模式 & Android中的设计模式

    GOF23种设计模式 设计原则: 1. 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 2. 开放-封闭原则(OCP):软件实体(类.模块.函数等)应该可以扩展,但是不可修改.即对 ...

  8. Android中解析XML

    XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...

  9. Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别

    XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能.今天就由我向大家介绍一下在Android平台下几种常见的XML解 ...

随机推荐

  1. 换肤功能的实现以及监听storage实现多个标签页一起换肤

    1:需求:项目的侧边栏实现换肤功能,核心代码: updateSkin (val) { const existSkinLink = document.head.querySelector('link[i ...

  2. 【bzoj2561】最小生成树 网络流最小割

    题目描述 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条边权为L的边(u,v),那么需要删掉最 ...

  3. 【bzoj3105】[cqoi2013]新Nim游戏 高斯消元求线性基

    题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从 ...

  4. rest-framwork官方文档教程(一)

    该项目是按照官网quickstart进行的,具体也可查看rest-framework官网: https://www.django-rest-framework.org/tutorial/quickst ...

  5. bzoj 2801 [Poi2012]Minimalist Security 设一个,求出所有

    题目大意 给出一个N个顶点.M条边的无向图,边(u,v)有权值w(u,v),顶点i也有权值p(i), 并且对于每条边(u,v)都满足p(u)+p(v)>=w(u,v). 现在要将顶点i的权值减去 ...

  6. 我要好offer之 字符串相关大总结

    1. str*系列手写代码 a. 一定要注意末尾'\0'的处理,切记切记 b. 一定要对输入做有效性判断,多用断言就是了 int Strlen(const char* str) { assert(st ...

  7. Problem 2111 Min Number

                                                                                                        ...

  8. C语言第四题

    今天就一道题 阅读printf代码的具体实现,要求在阅读过程中要做下列的事 1.至少列出十个c标准库的方法,并且说明他们方法的含义,以及参数的含义 2.至少列出2个c标准库的引入(或者是依赖),并且说 ...

  9. 【BZOJ4472】salesman(树形DP)

    题意: 给定一颗有点权的树,每个树上的节点最多能走到lim[u]次,求一条路径,使路径上的点权和最大,每个节点上的点权如果走了多次只能算一次.还要求方案是否唯一. 思路:每个点只能取lim[u]-1个 ...

  10. javap的基本用法

    参考:http://www.cnblogs.com/beautiful-code/p/6424977.html javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,我们 ...