丰富多彩的Dialog之AlertDialog.Builder
2014-05-14 10:25
281 查看
import java.util.Calendar; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.content.DialogInterface; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.Toast; public class DialogActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); //效果 overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right); loginDialog(); //登录框 itemDialog(); //选项框 mutilDialog(); //多选框 dateDialog(); //日期框 sexDialog(); //性别选择框 } //login private void loginDialog(){ Button loginBtn=(Button)findViewById(R.id.loginDialog); loginBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Builder builder=new AlertDialog.Builder(DialogActivity.this); builder.setIcon(R.drawable.add); builder.setTitle("奋斗吧"); //加载layout,也可以用findViewById LayoutInflater inflater = LayoutInflater.from(DialogActivity.this); View loginview=inflater.inflate(R.layout.login, null); builder.setView(loginview); builder.setPositiveButton("开始", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); builder.setNegativeButton("放弃", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //关闭 dialog.dismiss(); } }); //显示对话框 builder.show(); } }); } //item private void itemDialog(){ Button loginBtn=(Button)findViewById(R.id.itemDialog); //选项被单击的时候 loginBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Builder builder=new AlertDialog.Builder(DialogActivity.this); final String stulist[]=getResources().getStringArray(R.array.stulist); builder.setTitle("奋斗吧"); builder.setItems(stulist , new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "你选中了"+stulist[which], Toast.LENGTH_SHORT).show(); } }); //显示对话框 builder.show(); } }); } //多选框 private void mutilDialog(){ Button loginBtn=(Button)findViewById(R.id.mutilDialog); loginBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Builder builder=new AlertDialog.Builder(DialogActivity.this); final String stulist[]=getResources().getStringArray(R.array.stulist); //资源数组 final boolean []checkedItems=new boolean[stulist.length]; //选中状态 for (int i = 0; i < stulist.length; i++) { checkedItems[i]=false; //默认全部不选 } builder.setTitle("奋斗吧"); builder.setMultiChoiceItems(stulist, checkedItems, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkedItems[which]=isChecked; //记录点击的那个的状态 } }); builder.setPositiveButton("开始", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { StringBuffer items=new StringBuffer(); for (int i = 0; i < checkedItems.length; i++) { if(checkedItems[i]){ items.append(stulist[i]); } } Toast t=Toast.makeText(getApplicationContext(), "你选中了"+items, Toast.LENGTH_SHORT); t.setGravity(Gravity.BOTTOM | Gravity.CENTER, 0, 100); t.setMargin(0.0f, 0.0f); t.show(); } }); //显示对话框 builder.show(); } }); } //日期框 private void dateDialog(){ Button dateDialogButton = (Button) findViewById(R.id.dateDialog); dateDialogButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Calendar calendar = Calendar.getInstance(); DatePickerDialog datePicker = new DatePickerDialog( DialogActivity.this, new OnDateSetListener() { @Override public void onDateSet(DatePicker date, int y, int m, int d) { String sd = y + "年" + (m+1) + "月" + d + "日"; Toast.makeText(getApplicationContext(), "你选择的日期是:" + sd, Toast.LENGTH_SHORT) .show(); } }, calendar.get(Calendar.YEAR), calendar .get(Calendar.MONTH), calendar .get(Calendar.DAY_OF_MONTH)); //显示 datePicker.show(); } }); } //单选框 private void sexDialog(){ Button sexBtn = (Button) findViewById(R.id.sexDialog); sexBtn.setOnClickListener(new OnClickListener() { int selectIndex=0; @Override public void onClick(View view) { final String[] sexs = new String[] {"男","女"}; Builder builder = new AlertDialog.Builder(DialogActivity.this); builder.setTitle("选择性别"); builder.setSingleChoiceItems(sexs, 1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int position) { selectIndex = position; } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int position) { Toast.makeText(getApplicationContext(), "你选择了" + sexs[selectIndex], Toast.LENGTH_SHORT).show(); } }); builder.show(); } }); } }
自定义的登录布局 : login.xml
<?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:orientation="vertical" android:id="@+id/loginLayout"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密码" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout>
选项的资源文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="stulist"> <item>黄晓明</item> <item>朱莉</item> <item>李菲菲</item> <item>李小名</item> <item>李雪</item> </string-array> </resources>
总的配置文件:activity_dialog.xml
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".DialogActivity"
android:orientation="vertical" >
<Button android:id="@+id/loginDialog" style="@style/btnStyle" android:text="logindialog" />
<Button android:id="@+id/itemDialog" style="@style/btnStyle" android:text="itemdialog" />
<Button android:id="@+id/mutilDialog" style="@style/btnStyle" android:text="mutildialog" />
<Button android:id="@+id/dateDialog" style="@style/btnStyle" android:text="datedialog" />
<Button android:id="@+id/sexDialog" style="@style/btnStyle" android:text="sexdialog" />
</LinearLayout>
相关文章推荐
- AlertDialog.Builder用法大全
- 为什么要使用AlertDialog.Builder创建AlertDialog对话框
- new AlertDialog.Builder 提示错误
- AlertDialog.Builder中的setMultiChoiceItems中的事件处理
- android Alertdialog.Builder 创建对话框的七种方式
- AlertDialog.Builder弹出自定义Layout窗口
- Android源码解析--AlertDialog及AlertDialog.Builder
- 对AlertDialog.Builder进行封装
- AlertDialog和AlertDialog.builder、返回键退出操作
- Android 使用AlertDialog.Builder构造对话框dialog全过程
- Android开发之AlertDialog.Builder…
- 在Android6.0中使用AlertDialog.Builder出现的问题
- android—使用AlertDialog.Builder对话框
- 如何解决AlertDialog.Builder没有dismiss()方法
- AlertDialog.Builder setCancelable用法
- AlertDialog.Builder详解
- android-如何关闭AlertDialog.Builder对话框
- The method setPositiveButton(int, DialogInterface.OnClickListener) in the type AlertDialog.Builder i
- AlertDialog.Builder
- Android AlertDialog.Builder 取消(个人)