• Android之Builder对话框的一些常用方式


    原文:

    http://blog.csdn.net/kkfdsa132/article/details/6322835

    Android为我们提供几种对话框,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。

        AlertDialog,是具有0-3个按钮,还可以可以放置选项、复选框单选框或自定义布局等,以达到与用户交互的效果。

        AlertDialog中 最常用的莫过于Builder对话框。下面,列举出它常用的几种方式:1.简单的Builder;2.带控件的Builder;3.自定义布局的Builder;4.嵌套的Builder

        1)简单的Builder

              

         

    [java] view plaincopy
     
    1. new AlertDialog.Builder(AlertDialog_Builder.this)   //Content上下文  
    2. .setIcon(android.R.drawable.ic_dialog_alert)        //图标,android.R开头表示Android提供的资源库  
    3. .setTitle("简单的Builder:显示文本内容")              //标题  
    4. .setMessage(et_show.getText())                      //要显示的内容  
    5. .show();                                            //显示  
     

        2)带控件的Builder

            

        

    [java] view plaincopy
     
    1. final CharSequence[] items ={"Black", "Red", "Blue", "Yellow"};  
    2. final int[] color = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW};  
    3. final StringBuffer selectedItem = new StringBuffer("0");  
    4. new AlertDialog.Builder(AlertDialog_Builder.this)  
    5. .setIcon(android.R.drawable.ic_dialog_info)  
    6. .setTitle("带Button的Builder:显示文本内容")  
    7. //.setMessage(et_show.getText())  
    8. .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {  
    9.   
    10. @Override  
    11. public void onClick(DialogInterface dialog, int which) {  
    12. // TODO Auto-generated method stub  
    13. selectedItem.delete(0, selectedItem.length()-1);  
    14. selectedItem.append(which);  
    15. }  
    16.   
    17. })  
    18. .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件  
    19. @Override  
    20. public void onClick(DialogInterface dialog, int which) {  
    21. // TODO Auto-generated method stub  
    22. int colorID = Integer.parseInt(selectedItem.toString());  
    23. et_show.setBackgroundColor(color[colorID]);  
    24. }  
    25.   
    26. })  
    27. .setNegativeButton("清除", new DialogInterface.OnClickListener() {    //注意,这个是SetNegativeButton,上面那个是SetPositiveButton  
    28. //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。  
    29. @Override  
    30. public void onClick(DialogInterface dialog, int which) {  
    31. // TODO Auto-generated method stub  
    32. et_show.setText("");  
    33. }  
    34. })  
    35. .setNeutralButton("取消", new DialogInterface.OnClickListener() {  
    36.   
    37. @Override  
    38. public void onClick(DialogInterface dialog, int which) {  
    39. // TODO Auto-generated method stub  
    40. dialog.cancel();  
    41. }  
    42. })  
    43. .show();  

        3)自定义布局的Builder

            

        a.代码

       

    [java] view plaincopy
     
    1. final LayoutInflater layout = LayoutInflater.from(AlertDialog_Builder.this);    //用于获取,要使用final修饰  
    2. final View customView = layout.inflate(R.layout.alter_text, null);          //创建自定义的View,要使用final修饰  
    3. new AlertDialog.Builder(AlertDialog_Builder.this)  
    4. .setIcon(android.R.drawable.ic_dialog_info)  
    5. .setTitle("自定义的Builder:修改文本内容")  
    6. .setView(customView)        //添加自定义视图  
    7. .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件  
    8. @Override  
    9. public void onClick(DialogInterface dialog, int which) {  
    10. // TODO Auto-generated method stub  
    11. EditText et_alteredText = (EditText)customView.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText  
    12. et_show.setText(et_alteredText.getText().toString());  
    13. }  
    14.   
    15. })  
    16. .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton  
    17. //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。  
    18. @Override  
    19. public void onClick(DialogInterface dialog, int which) {  
    20. // TODO Auto-generated method stub  
    21. dialog.cancel();  
    22. }  
    23. })  
    24. .show();  

        b.布局文件alter_text.xml

       

    [xhtml] view plaincopy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <AbsoluteLayout  
    3. android:id="@+id/widget1"  
    4. android:layout_width="fill_parent"  
    5. android:layout_height="fill_parent"  
    6. xmlns:android="http://schemas.android.com/apk/res/android"  
    7. >  
    8. <EditText  
    9. android:id="@+id/et_alteredText"  
    10. android:layout_width="fill_parent"  
    11. android:layout_height="wrap_content"  
    12. android:textSize="18sp"  
    13. android:layout_x="0px"  
    14. android:layout_y="22px"  
    15. >  
    16. </EditText>  
    17. </AbsoluteLayout>  

        4)嵌套的Builder

           

        

    [java] view plaincopy
     
    1. final LayoutInflater layout2 = LayoutInflater.from(AlertDialog_Builder.this);   //用于获取XML工厂,要使用final修饰  
    2. final View customView2 = layout2.inflate(R.layout.alter_text, null);            //创建自定义的View,要使用final修饰  
    3. new AlertDialog.Builder(AlertDialog_Builder.this)  
    4. .setIcon(android.R.drawable.ic_dialog_info)  
    5. .setTitle("嵌套的Builder:显示文本内容")  
    6. .setMessage(et_show.getText())  
    7. .setPositiveButton(R.string.rename, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件  
    8. @Override  
    9. public void onClick(DialogInterface dialog, int which) {  
    10. // TODO Auto-generated method stub  
    11. new AlertDialog.Builder(AlertDialog_Builder.this)  
    12. .setIcon(android.R.drawable.ic_dialog_info)  
    13. .setTitle("嵌套的Builder:修改文本内容")  
    14. .setView(customView2)       //添加自定义视图  
    15. .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件  
    16. @Override  
    17. public void onClick(DialogInterface dialog, int which) {  
    18. // TODO Auto-generated method stub  
    19. EditText et_alteredText = (EditText)customView2.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText  
    20. et_show.setText(et_alteredText.getText().toString());  
    21. }  
    22.   
    23. })  
    24. .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton  
    25. //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。  
    26. @Override  
    27. public void onClick(DialogInterface dialog, int which) {  
    28. // TODO Auto-generated method stub  
    29. dialog.cancel();  
    30. }  
    31. })  
    32. .show();  
    33. }  
    34.   
    35. })  
    36. .setNegativeButton("取消", new DialogInterface.OnClickListener() {    //注意,这个是SetNegativeButton,上面那个是SetPositiveButton  
    37. //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。  
    38. @Override  
    39. public void onClick(DialogInterface dialog, int which) {  
    40. // TODO Auto-generated method stub  
    41. et_show.setText("");  
    42. }  
    43. })  
    44. .show();  

          至于Builder的进一步使用,以后在补上。

     
    0
  • 相关阅读:
    python学习随笔--string[:]
    年少时读不懂 天龙八部,如今读懂已过少年
    web安全测试随笔
    纪录jmeter loop controller 使用中的一个坑
    移动设备覆盖统计数据源
    jmeter and postman
    web测试----http状态码
    转自莫某的java学习计划
    jquery实现页面加载时删除特定class 的div内前三个字符
    js学习
  • 原文地址:https://www.cnblogs.com/mochaMM/p/5082933.html
Copyright © 2020-2023  润新知