博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android高级界面组件的学习(三)
阅读量:6982 次
发布时间:2019-06-27

本文共 3108 字,大约阅读时间需要 10 分钟。

这次的高级界面组件学习我要讲的是对话框。在平时的APP使用中,我们经常会在点击某个按钮的时候,可能会弹出一个长方形或类似长方形的框框,提示我们进行选择,并且会伴随着两个按钮——“确定”和“取消”,这就是我们最常见的对话框了。

用的最多的对话框应该就是AlertDialog了,但是我们往往会希望自定义对话框的布局,所以今天我介绍一下AlertDialog和它的多种展示模式,此外就是说一下自己是怎么自定义Alertdialog的。

一、AlertDialog之显示提示消息的对话框

1.首先是新建一个工程,在activity_main.xml定义四个点击按钮,并且在MainActivity中为这四个按钮设置监听,其中findViewById和onClickListener()的相关代码省略。

 

2. 把四个按钮实例化并且设置了监听之后,在onClick()方法中为四个按钮的点击事件调用相对应的方法:

(1)首先是简单提示对话框具体代码和实现,这里我们设置两个Button——“确定”和“取消”,也就是setPositiveButton和setNegativeButton,如果只是需要一个Button的话那就直接设置一个Button即可。具体的实现代码如下(simple()方法是点击简单对话框的相应按钮调用的方法):

private void simple(View source) {    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())            // 设置对话框的标题            .setTitle("Do you like Android?")                    // 设置对话框的标题左侧的icon            .setIcon(R.drawable.home_icon)                    // 设置对话框的提示内容            .setMessage("If you like ,please select true \nelse cancel");    // 添加确定按钮    setPositiveButton(builder);    // 添加取消按钮    setNegativeButton(builder).create().show();}
 
(2)同理写出简单列表对话框弹出的代码,其实和简单对话框没有太大的区别,只是定义了一个String类型的数组用来填充列表项,然后把setMessage()方法换成setItems()方法,具体方法的代码如下:
 
private String[] items = new String[]{
"Android","JAVA","C++"};
 
private void simpleList(View source) {    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())            // 设置对话框的标题            .setTitle("What is your favorite?")            // 设置对话框的标题左侧的icon            .setIcon(R.drawable.home_icon)            // 设置对话框的提示内容            .setItems(items, new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    Toast.makeText(getActivity(), "You choosed" + items[which], Toast.LENGTH_SHORT).show();                }            });    // 添加确定按钮    setPositiveButton(builder);    // 添加取消按钮    setNegativeButton(builder).create().show();}
(3)同理写出单选列表项对话框和多选列表项对话框,前者将简单对话框的setMessage()变成setSingleChoiceItem(),后者则是变成setMultiChoiceItems(),主要代码如下: 
 
 
// 设置对话框默认被选中的行,这里是“1”,对应第二行.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {        tvShow.setText("You choosed " + items[which]);    }});
 
// 设置对话框列表项是否被选中.setMultiChoiceItems(items, new boolean[]{
false, true, false}, null);

                               

上面算是对AlertDialog的一些简单实现,往往我们会想做更加高逼格的对话框。在AlertDialog中有一个setView方法,我们可以直接通过下列代码实现我们想要的对话框的显示:

private void customList(View source) {    LinearLayout prompt = (LinearLayout) getActivity().getLayoutInflater()    .inflate(R.layout.prompt_layout, null);    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())            // 设置对话框的标题            .setTitle("The AlertDialog By Myself")                    // 设置对话框的标题左侧的icon            .setIcon(R.drawable.home_icon)                    // 设置对话框列表项是否被选中            .setView(prompt);    // 添加确定按钮    setPositiveButton(builder);    // 添加取消按钮    setNegativeButton(builder).create().show();}
 
如上图所示,红色框框内的部分就是对应的prompt_layout,有兴趣额的小伙伴可以自己尝试各种风格的对话框,这里也就不多说了,以上就是我对于AlertDialog的一些学习和了解,有不对的地方欢迎指正。

你可能感兴趣的文章
centos -bash: vim: command not found
查看>>
为什么要将对象序列化
查看>>
新增网址/网页 截图api[增加安全防护本接口已停用]源码可下载
查看>>
SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二)
查看>>
刷leetcode第705题- 设计哈希集合
查看>>
dubbo协议参考
查看>>
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
查看>>
读《白帽子讲Web安全》之安全意识篇(一)
查看>>
Session问题
查看>>
运用 autoconf 和 automake 自动生成 Makefile 实例讲解
查看>>
OpenSSL 之 RSA 相关命令学习笔记
查看>>
GLSL三种修饰符区别与用途(uniform,attribute和varying)
查看>>
python django django-debug-toolbar 加载缓慢,不能使用。
查看>>
操作系之进程调度及算法详解
查看>>
PHPexcel实列
查看>>
Butterknife 的简单使用 和 配合 Butterknife的插件 Zelezny
查看>>
Magento利用input type=”file”上传图片
查看>>
Android音频开发(4):如何存储和解析wav文件
查看>>
Handler延迟事件使用
查看>>
【DG】Oracle 19c使用dbca来搭建物理DG
查看>>