Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)
来源:互联网 发布:javascript语法大全 编辑:程序博客网 时间:2024/05/16 17:35
1.回顾
上篇 学习了 Toast的使用,包括其自定义
2.重点
(1)对话框的实现
(2)普通对话框
(3)单选对话框
(4)多选对话框
(5)列表对话框
(6)自定义布局对话框
(7)Activity实现 对话框
(8)DialogInterface.OnClickListener 处理返回值
3.普通对话框
3.1 效果图
3.2 实现
(1)实现确定按钮监听(DialogInterface.OnClickListener )
//两个事件 : 确定监听class DialogSureClickListener implements DialogInterface.OnClickListener{@Overridepublic void onClick(DialogInterface dialog, int which) {// 判断 点击的是什么按钮dialog.dismiss();Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();tv_result.setText("点击了确定按钮");}}
(2)实现取消按钮监听(DialogInterface.OnClickListener )
//取消监听class DialogCanelClickListener implements DialogInterface.OnClickListener{@Overridepublic void onClick(DialogInterface dialog, int which) { // 判断 点击的是什么按钮dialog.dismiss();Toast.makeText(MainActivity.this,"点击了取消按钮",Toast.LENGTH_SHORT).show();tv_result.setText("点击了取消按钮");}}
(3)dialog 实现
/** * 普通的dialog */private void ShowPuTongDialog(){AlertDialog.Builder builder=new Builder(this);builder.setTitle("普通Dialog");builder.setIcon(R.drawable.img);builder.setMessage("Hi,我是 普通 Dialog");builder.setPositiveButton("确定",new DialogSureClickListener());builder.setNegativeButton("取消",new DialogCanelClickListener());AlertDialog dialog= builder.create();dialog.show();}
4.单选按钮对话框
4.1 效果图
4.2实现
(1)准备数据源
//准备数据源private String[] items={"儿童","少年","青年","成年","大叔","老头"};
(2)实现点击监听(DialogInterface.OnClickListener )
//监听事件class DialogsingleClickListener implements DialogInterface.OnClickListener{@Overridepublic void onClick(DialogInterface dialog, int which) {// 判断 单选按钮Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();tv_result.setText(items[which]);dialog.dismiss();}}
(3)dialog实现
/** * 单选按钮对话框 */private void ShowSingleDialog(){AlertDialog.Builder builder=new Builder(this);builder.setTitle("单选按钮对话框");builder.setIcon(R.drawable.ic_launcher);builder.setSingleChoiceItems(items,0,new DialogsingleClickListener());AlertDialog dialog=builder.create();dialog.show();}
5.多选按钮对话框
5.1 效果图
5.2 实现
(1)准备数据源
//数据源private String[] items1={"儿童","少年","青年","成年","大叔","老头"};
(2)多选监听事件(DialogInterface.OnMultiChoiceClickListener)
//多选监听事件class DialogMuitlClickListener implements DialogInterface.OnMultiChoiceClickListener{@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {// OnMultiChoiceClickListenerif(isChecked){Toast.makeText(MainActivity.this,items1[which],Toast.LENGTH_SHORT).show();tv_result.setText(tv_result.getText().toString()+items1[which]);}}}
(3)按钮监听事件(DialogInterface.OnClickListener)
// 确定 监听事件class DialogMuitlSureClickListener implements DialogInterface.OnClickListener{@Overridepublic void onClick(DialogInterface dialog, int which) {// 关闭 Dialogdialog.dismiss();}}
(4)Dialog 实现
/** * 多选按钮 对话框 */private void ShowMuitlDialog(){AlertDialog.Builder builder=new Builder(this);builder.setTitle("多选按钮对话框");builder.setIcon(R.drawable.ic_launcher);builder.setMultiChoiceItems(items, null,new DialogMuitlClickListener());builder.setPositiveButton("确定",new DialogMuitlSureClickListener());AlertDialog dialog=builder.create();dialog.show();}
6.列表对话框
6.1 效果图
6.2 实现
(1)准备数据源
//设置数据源private String[] items2={"儿童","少年","青年","成年","大叔","老头"};
(2)设置监听事件(DialogInterface.OnClickListener)
// list 监听事件class DialoglistClickListener implements DialogInterface.OnClickListener{@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,items2[which],Toast.LENGTH_SHORT).show();tv_result.setText(items2[which]);// 关闭 Dialogdialog.dismiss();}}
(3)Dialog实现
/** * list 对话框实现 */private void ShowListDialog(){AlertDialog.Builder builder=new Builder(this);builder.setTitle("list对话框");builder.setIcon(R.drawable.ic_launcher);builder.setItems(items2, new DialoglistClickListener());AlertDialog dialog=builder.create();dialog.show();}
7.自定义对话框
7.1效果图
7.2 实现
(1)新建Layout布局
实现 一个图片,一个输入框,一个按钮
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/img" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/btn_tijiao" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="提交数据" /></LinearLayout>
这里也使用到了 将布局 转为 view对象 ,目前 有两种方法 可以将 Layout布局转 View对象;
private EditText editText1;private AlertDialog selfdialog;/** * 自定义布局 的dialog 包括 取代 dialog中的值 */private void ShowSelfDialog(){//将 layout布局 转为 view对象LayoutInflater inflater=getLayoutInflater().from(this);View view=inflater.inflate(R.layout.dialog_layout,null);AlertDialog.Builder builder=new Builder(this);builder.setTitle("自定义对话框");builder.setIcon(R.drawable.ic_launcher);builder.setView(view);selfdialog=builder.create();selfdialog.show();//取得 dialog中的值Button btn_tijiao=(Button) view.findViewById(R.id.btn_tijiao);editText1=(EditText) view.findViewById(R.id.editText1);btn_tijiao.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 取得 dialog 中的值tv_result.setText("自定义 Dialog中取得值:"+editText1.getText().toString());selfdialog.dismiss();}});}
8.Activity 对话框
8.1效果图
没有优化,就这样了!
8.2 实现
(1)新建Activity
(2)设置主题
打开 Androidmainfest.xml ,找到刚刚新建的Activity 设置主题 theme
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog" android:label="@string/title_activity_dialog" > </activity>(3)设置布局 和 上面 自定义布局一样 (可以直接使用)
(4)初始化控件 实现 按钮点击事件
这里说明一下,因为需要 回调 传值,故使用了 setResult ;
class btn_tijiaoClickListener implements OnClickListener{@Overridepublic void onClick(View v) {// 按钮点击事件 ,给 mainActivity 回传输入的值Intent intent=new Intent();intent.putExtra("data",edittext1.getText().toString());setResult(1,intent);//结束 Activity dialogfinish();}}
(5)MainActivity 重写 onActivityResult 回调 拿值
/** * 重写 onActivityResult 方法 拿到 回调的值 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {//回调拿值if(resultCode==1&&requestCode==2){tv_result.setText(data.getStringExtra("data"));}}
(6)启动使用 startActivityforResult () 方法
Intent intent=new Intent(MainActivity.this,DialogActivity.class); startActivityForResult(intent, 2);
8.3 不懂得 可以看我的博客
Activity 跳转 全解 Intent : http://blog.csdn.net/lablenet/article/details/47866761
9.demo 免积分下载
http://download.csdn.net/detail/lablenet/9048643
0 0
- Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)
- Android简单对话框、输入对话框、单选对话框、复选对话框、列表对话框、自定义对话框、时间对话框
- 对话框封装类(普通对话框,列表对话框,单选按钮对话框,复选对话框)
- AlertDialog创建6种对话框的用法 (对话框,单选对话框,多选对话框,列表对话框,自定义对话框,退出对话框)
- Dialog-普通对话框-列表对话框
- Android的普通对话框,单选和多选对话框
- Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解
- (转载)Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解
- Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解
- Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解
- android通知对话框、多选对话框、单选对话框
- 对话框
- 对话框
- 对话框
- 对话框
- 对话框
- 对话框
- 对话框
- mysql主从数据库配置详解
- Java中判断字符串是否为数字的六种方法
- 粒子显示在ngui之间的方法
- /etc/profile 与 /etc/bashrc 的区别
- 环形缓冲区-公式
- Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)
- Mac上的抓包工具Charles
- Android int类型与String类型转换
- 浅谈TCP/IP协议族
- java的灵活运用
- convexHull函数
- Spring MVC form handling annotation example
- visualgdb windows linux 跨平台编译
- 常用Windows消息、常量命名参考