zoukankan      html  css  js  c++  java
  • Android入门教程(二十)之之AlertDialog(转)

    本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!

           时隔一年,又要准备做Android的开发了,最近复习和整理一下Android的知识。这次要说的是AlertDialog,这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dialog不一样,AlertDialog是非阻塞的,而阻塞的对话框用的是PopupWindow。

           先贴出程序运行的截图:

    main.xml的源码:

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:orientation="vertical"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="fill_parent"  
    6.     >  
    7.   
    8. <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:text="非Layout型对话框" android:layout_width="fill_parent"></Button>  
    9. <Button android:id="@+id/Button02" android:layout_height="wrap_content" android:text="Layout型对话框" android:layout_width="fill_parent"></Button><View android:id="@+id/View01" android:layout_width="wrap_content" android:layout_height="wrap_content"></View>  
    10.   
    11. </LinearLayout>  

    下图是非Layout型对话框,直接使用AlertDialog

    下图是使用了Layout的对话框,可以自定义控件,实现更复杂的对话框

    dialoglayout.xml的源码:

    1. <?xml version="1.0" encoding="utf-8"?>  
    2.   
    3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    4.     android:layout_width="fill_parent" android:layout_height="wrap_content"  
    5.     android:orientation="vertical">  
    6.     <EditText android:layout_height="wrap_content"  
    7.         android:layout_width="fill_parent" android:layout_marginLeft="20dip"  
    8.         android:layout_marginRight="20dip" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/edtInput"/>  
    9. </LinearLayout>  

    程序源码:

    1. package com.testAlertDialog;  
    2.   
    3. import android.app.Activity;  
    4. import android.app.AlertDialog;  
    5. import android.content.Context;  
    6. import android.content.DialogInterface;  
    7. import android.os.Bundle;  
    8. import android.view.Gravity;  
    9. import android.view.LayoutInflater;  
    10. import android.view.View;  
    11. import android.view.View.OnClickListener;  
    12. import android.widget.Button;  
    13. import android.widget.EditText;  
    14. import android.widget.PopupWindow;  
    15.   
    16.   
    17. public class testAlertDialog extends Activity {  
    18.     Button btnShowDialog;  
    19.     Button btnShowDialog_Layout;  
    20.     /** Called when the activity is first created. */  
    21.     @Override  
    22.     public void onCreate(Bundle savedInstanceState) {  
    23.         super.onCreate(savedInstanceState);  
    24.         setContentView(R.layout.main);  
    25.         //定义按钮   
    26.         btnShowDialog=(Button)this.findViewById(R.id.Button01);  
    27.         btnShowDialog.setOnClickListener(new ClickEvent());  
    28.         btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02);  
    29.         btnShowDialog_Layout.setOnClickListener(new ClickEvent());  
    30.     }  
    31.       
    32.       
    33.     //统一处理按键事件   
    34.     class ClickEvent implements OnClickListener{  
    35.   
    36.         @Override  
    37.         public void onClick(View v) {  
    38.             // TODO Auto-generated method stub   
    39.             if(v==btnShowDialog)  
    40.                 showDialog(testAlertDialog.this);  
    41.                   
    42.             else if(v==btnShowDialog_Layout)  
    43.                 showDialog_Layout(testAlertDialog.this);  
    44.               
    45.         }  
    46.   
    47.     }  
    48.   
    49.     //显示基本的AlertDialog   
    50.     private void showDialog(Context context) {  
    51.         AlertDialog.Builder builder = new AlertDialog.Builder(context);  
    52.         builder.setIcon(R.drawable.icon);  
    53.         builder.setTitle("Title");  
    54.         builder.setMessage("Message");  
    55.         builder.setPositiveButton("Button1",  
    56.                 new DialogInterface.OnClickListener() {  
    57.                     public void onClick(DialogInterface dialog, int whichButton) {  
    58.                         setTitle("点击了对话框上的Button1");  
    59.                     }  
    60.                 });  
    61.         builder.setNeutralButton("Button2",  
    62.                 new DialogInterface.OnClickListener() {  
    63.                     public void onClick(DialogInterface dialog, int whichButton) {  
    64.                         setTitle("点击了对话框上的Button2");  
    65.                     }  
    66.                 });  
    67.         builder.setNegativeButton("Button3",  
    68.                 new DialogInterface.OnClickListener() {  
    69.                     public void onClick(DialogInterface dialog, int whichButton) {  
    70.                         setTitle("点击了对话框上的Button3");  
    71.                     }  
    72.                 });  
    73.         builder.show();  
    74.     }  
    75.   
    76.   
    77.     //显示基于Layout的AlertDialog   
    78.     private void showDialog_Layout(Context context) {  
    79.         LayoutInflater inflater = LayoutInflater.from(this);  
    80.         final View textEntryView = inflater.inflate(  
    81.                 R.layout.dialoglayout, null);  
    82.         final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput);  
    83.         final AlertDialog.Builder builder = new AlertDialog.Builder(context);  
    84.         builder.setCancelable(false);  
    85.         builder.setIcon(R.drawable.icon);  
    86.         builder.setTitle("Title");  
    87.         builder.setView(textEntryView);  
    88.         builder.setPositiveButton("确认",  
    89.                 new DialogInterface.OnClickListener() {  
    90.                     public void onClick(DialogInterface dialog, int whichButton) {  
    91.                         setTitle(edtInput.getText());  
    92.                     }  
    93.                 });  
    94.         builder.setNegativeButton("取消",  
    95.                 new DialogInterface.OnClickListener() {  
    96.                     public void onClick(DialogInterface dialog, int whichButton) {  
    97.                         setTitle("");  
    98.                     }  
    99.                 });  
    100.         builder.show();  
    101.     }  
    102. }  
  • 相关阅读:
    Android OpenGL ES 2.0 (四) 灯光perfragment lighting
    Android OpenGL ES 2.0 (五) 添加材质
    冒泡排序函数
    javascript object 转换为 json格式 toJSONString
    Liunx CentOS 下载地址
    jquery 图片切换特效 鼠标点击左右按钮焦点图切换滚动
    javascript 解析csv 的function
    mysql Innodb Shutdown completed; log sequence number解决办法
    Centos 添加 yum
    javascript 键值转换
  • 原文地址:https://www.cnblogs.com/l_dragon/p/2134568.html
Copyright © 2011-2022 走看看