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>

    (2)Dialog实现
            这里也使用到了 将布局 转为 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
原创粉丝点击