0
点赞
收藏
分享

微信扫一扫

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)


1.回顾


   上篇 学习了 Toast的使用,包括其自定义


2.重点


  (1)对话框的实现


  (2)普通对话框


  (3)单选对话框


  (4)多选对话框


  (5)列表对话框


  (6)自定义布局对话框


  (7)Activity实现 对话框


  (8)DialogInterface.OnClickListener 处理返回值



3.普通对话框

  3.1 效果图




                                                                

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_Activity对话框


   3.2 实现


DialogInterface.OnClickListener )


//两个事件 : 确定监听
class DialogSureClickListener implements DialogInterface.OnClickListener{

@Override
public void onClick(DialogInterface dialog, int which) {
// 判断 点击的是什么按钮
dialog.dismiss();
Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();
tv_result.setText("点击了确定按钮");
}

}




DialogInterface.OnClickListener )


//取消监听
class DialogCanelClickListener implements DialogInterface.OnClickListener{

@Override
public 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 效果图


                                                                

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_AlertDialog.builder_02


    4.2实现


      (1)准备数据源


//准备数据源
private String[] items={"儿童","少年","青年","成年","大叔","老头"};




DialogInterface.OnClickListener )


//监听事件
class DialogsingleClickListener implements DialogInterface.OnClickListener{

@Override
public 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 效果图


                                                                

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_Activity对话框_03


    5.2 实现


    (1)准备数据源


//数据源
private String[] items1={"儿童","少年","青年","成年","大叔","老头"};




OnMultiChoiceClickListener)


//多选监听事件
class DialogMuitlClickListener implements DialogInterface.OnMultiChoiceClickListener{

@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// OnMultiChoiceClickListener
if(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{

@Override
public void onClick(DialogInterface dialog, int which) {
// 关闭 Dialog
dialog.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 效果图


                                                                

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_自定义对话框_04


   6.2 实现


        (1)准备数据源


//设置数据源
private String[] items2={"儿童","少年","青年","成年","大叔","老头"};




        (2)设置监听事件(DialogInterface.OnClickListener)


// list 监听事件
class DialoglistClickListener implements DialogInterface.OnClickListener{

@Override
public void onClick(DialogInterface dialog, int which) {

Toast.makeText(MainActivity.this,items2[which],Toast.LENGTH_SHORT).show();
tv_result.setText(items2[which]);
// 关闭 Dialog
dialog.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效果图


                                                               

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_自定义对话框_05


    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() {

@Override
public void onClick(View v) {
// 取得 dialog 中的值
tv_result.setText("自定义 Dialog中取得值:"+editText1.getText().toString());
selfdialog.dismiss();
}
});


}



8.Activity 对话框


  8.1效果图


         没有优化,就这样了!


                                                                

Android-Dialog对话框 全解(普通对话框,单选对话框,多选对话框,列表对话框,自定义对话框,Activity对话框)_单选对话框_06




    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>


      (4)初始化控件 实现 按钮点击事件


                 这里说明一下,因为需要 回调 传值,故使用了 setResult ;


class  btn_tijiaoClickListener implements OnClickListener{

@Override
public void onClick(View v) {
// 按钮点击事件 ,给 mainActivity 回传输入的值
Intent intent=new Intent();
intent.putExtra("data",edittext1.getText().toString());
setResult(1,intent);
//结束 Activity dialog
finish();
}

}


       (5)MainActivity 重写 onActivityResult 回调 拿值


/**
* 重写 onActivityResult 方法 拿到 回调的值
*/
@Override
protected 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 不懂得 可以看我的博客


      ​​跳转 全解 Intent


9.demo 免积分下载




举报

相关推荐

MFC 通用对话框之文件对话框

0 条评论