Android中提供了各种原生的对话框,在使用简单的功能的时候,还不比考虑自定义,使用原生的也能完成功能。本篇简单小案例就介绍三种对话框。

还是直接上代码吧:

布局中三个点击事件的按钮:

<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"
tools:context=".MainActivity"
android:orientation="vertical"
> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定取消对话框"
android:onClick="click1"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选对话框"
android:onClick="click2"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多选对话框"
android:onClick="click3"
/> </LinearLayout>

代码中展示这几个对话框,主要的API介绍,代码中注释的很详细了~:

public class MainActivity extends Activity {

	@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void click1(View v){
AlertDialog.Builder builder = new Builder(this);//对话框的而上下文必须是活动
//设置图标
builder.setIcon(android.R.drawable.alert_dark_frame);
//设置标题
builder.setTitle("欲练此功必先自宫");
//设置文本
builder.setMessage("李志平,想清楚哦"); //设置确定按钮
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "感谢使用本软件,再见", 0).show();
}
}); //设置取消按钮
builder.setNegativeButton("取消", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "若不自宫,一定不成功", 0).show();
}
});
//使用创建器,生成一个对话框对象.简单写法可以是bulider.show();
AlertDialog ad = builder.create();
ad.show();
} public void click2(View v){
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("请选择性别");
final String[] items = new String[]{
"男",
"女"
}; //参数1:数据源;2:默认选中那个项-1表示都不选择;3:选择的监听回调,点击选择才调用
builder.setSingleChoiceItems(items, -1, new OnClickListener() { //which:用户所选的条目的下标
//dialog:触发这个方法的对话框
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您选择的是:" + items[which], 0).show();
//关闭对话框
dialog.dismiss();
}
});
builder.show();
} public void click3(View v){
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("请选择您觉得帅的人");
final String[] items = new String[]{
"龙哥",
"杨帅哥",
"杨先生",
"杨师兄"
}; final boolean[] checkedItems = new boolean[]{//选中状态的标志位数组
true,
true,
false,
false
}; //第二个参数:默认选择的项,传入null表示都未选中。它代表着那个项是选中的
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() { //选中某个选项之后,checkedItem中某一项就变味true
//which:用户点击的条目的下标
//isChecked:用户是选中该条目还是取消该条目,选中就是true
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItems[which] = isChecked;//通过改变选中状态的标志位数组来改变,哪个item被选中或取消选中
}
}); //设置一个确定按钮
builder.setPositiveButton("确定", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
String text = "";
for(int i = 0; i < 4; i++){
text += checkedItems[i]? items[i] + "," : "";//三目运算符
}
Toast.makeText(MainActivity.this, text, 0).show();
dialog.dismiss();
}
});
builder.show();
}
}

运行程序如下:

几种常见的原生对话框介绍完毕了,喜欢我的朋友可以关注我哦~

Android简易实战教程--第四十五话《几种对话框》的更多相关文章

  1. Android简易实战教程--第四十六话《RecyclerView竖向和横向滚动》

    Android5.X后,引入了RecyclerView,这个控件使用起来非常的方便,不但可以完成listView的效果,而且还可以实现ListView无法实现的效果.当然,在新能方便也做了大大的提高. ...

  2. Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》

    之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...

  3. Android简易实战教程--第三十五话《音乐播放》

    已经好几天不更新博客了,今天轻松一点模拟个简单的"音乐播放器".1分钟看完~ 整个简单布局,加几个控制按钮: <LinearLayout xmlns:android=&quo ...

  4. Android简易实战教程--第四十九话《满屏拖动的控件》

    今天做个有意思的效果吧,控件的拖拽,简单实用,逻辑清晰点3分钟看完. 说的很高大上,其实就是拖动Button按钮跟着鼠标位置满手机屏幕跑罢了. 直接上简单的代码吧: public class Main ...

  5. Android简易实战教程--第四十二话《Spinner下拉级联效果》

    本篇承接第四十话第四十话<Spinner> 参考博客:http://blog.csdn.net/yayun0516 进入正题: Strings加入第一级数据: <string-arr ...

  6. Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》

    一.ScrollView 由于手机屏幕的高度有限,当普通布局放不下现实和的内容时,ScrollView视图(滚动视图)就会派上用场,因为数据可以往下滚动显示. 二.HorizontalScrollVi ...

  7. Android简易实战教程--第四十话《Spinner》

    对于Spinner控件的介绍和使用方法,可以先看之前写过的一篇博客:Spinner控件详解 本篇就基于这个知识点完成一个简单的小案例: 根据介绍,先写一个布局: <?xml version=&q ...

  8. Android简易实战教程--第三十六话《电话录音》

    今天完成一个简单的电话录音功能,即接通电话后,立即录下自己打电话的声音.实现起来比较简单:一个服务,一个TelephonyManager.一个MediaRecorder就够了. 1.布局提供一个开启录 ...

  9. Android简易实战教程--第三十九话《Chronometer实现倒计时》

    Android提供了实现按照秒计时的API,今天就是用这个API实现简单的倒计时. 来个布局: <?xml version="1.0" encoding="utf- ...

随机推荐

  1. lsdyna进阶教程-弹性球撞击刚性平板

    在lsdyna基础教程中,我们做了一个关于刚性球撞击弹性平板的粒子,现在我们考虑另外一个问题,如果用弹性球撞击刚性地面该怎么做呢?是不是要从头开始建模,操作步骤是不是一样呢?其实很简单,将球和地面的材 ...

  2. oracle 11g rac R2 for linux change(public,vip)IP ,hostname (oracle 11g rac R2 修改公有,虚拟,私有IP,网卡)

    结构如下: 说明: 节点IP,主机名的修改步骤来自ORACLE support文档: 如何修改集群的公网信息(包括 VIP) (文档 ID 1674442.1) 实验环境情况如下: 实验 节点名称 数 ...

  3. 我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线

    Hi,大家好,我是承香墨影! 距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS ...

  4. iframe 里的高度适应的问题

    iframe 这个东西功能是很强大,但是有一个巨大的问题就是高度自适应的问题: 不过这个问题,百度或者谷歌上有很多解决办法,但是,很多时候都有兼容性问题: 所有我就每个方法都试了一遍,终于找到了一个 ...

  5. PHP面向对象-看父类调用子类方法

    大部分面向对象编程语言中,父类是不允许调用子类的方法的,但是PHP中可以 1.父类调用子类方法示例 class A { public function testa() { $this->test ...

  6. [LeetCode] Subarray Product Less Than K 子数组乘积小于K

    Your are given an array of positive integers nums. Count and print the number of (contiguous) subarr ...

  7. SQL注入 手注与联合注入

    SQL注入,吧sql命令插入到WEB表单,或输入域名或页面亲求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令:            得到数据库用户名和密码 1:在以,{ .asp?id=32( ...

  8. NOI2006 郁闷的出纳员

    题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...

  9. ●BZOJ 1499 [NOI2005]瑰丽华尔兹

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1499 题解: 单调队列优化DP 定义 dp[t][x][y] 表示第t个时间段之后,处在(x ...

  10. [Codeforces Round#417 Div.2]

    来自FallDream的博客,未经允许,请勿转载,谢谢. 有毒的一场div2 找了个1300的小号,结果B题题目看错没交  D题题目剧毒 E题差了10秒钟没交上去. 233 ------- A.Sag ...