android详细的对话框AlertDialog.Builder使用方法

通过new一个AlertDialog.Builder对象,构造一个具有Title(setTitle)、message(setMessage)和确认按钮PositiveButton(setPositiveButton)的对话窗口。

其中方法的定义为:

setTitle设置标题
 setIcon设置对话框图标
 setMessage简单消息框
 setItems设置要在对话框中显示的项目列表
 setView设置自定义的对话框样式
 setSingleChoiceItems设置对话框显示一个单选框
 setMultiChoiceItems设置对话框显示一系列的复选框
 setPositiveButton设置对话框显示一个确定的按钮
 setNeutralButton设置对话框显示一个退出按钮
 setNegativeButton 设置对话框显示一个取消按钮
 create创建一个AlertDialog对话框
 show显示对话框

具体实现如下

public class MainActivity extends Activity{
	private Button button1;
	private MainActivity activity;
	private TextView tview;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		activity = this;
		
		button1 = (Button) findViewById(R.id.button1);
		
		button1.setOnClickListener(button1_OnClickListener);	
		
		
	}
	
	private OnClickListener button1_OnClickListener = new OnClickListener() {
		@Override
		public void onClick(View v) {
			/**
			 * 设置弹出对话框
			 * */
			new AlertDialog.Builder(activity).setTitle(R.string.hello_world).setMessage(R.string.app_name)
			.setPositiveButton(R.string.action_settings, new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					//这里定义对话框按钮单击之后要运行的事件
				}
			}).show();
		
			
			
		}
	};		
}

要弹出一个由两个按钮的对话框可以这样

new AlertDialog.Builder(activity).setTitle("离开")
		.setMessage("真要啊").setNegativeButton("取消", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		}).setPositiveButton("确定", new DialogInterface.OnClickListener(){
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				finish();
			}
		}).show();

一个列表框的实现

java代码

	new AlertDialog.Builder(MainActivity.this)
			.setTitle(R.string.str_alert_title)
			.setIcon(R.drawable.downcom)
			.setItems(R.array.what_eat, new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					CharSequence strDialogBody = getString(R.string.str_alert_body);
					String[] aryShop = getResources().getStringArray(R.array.what_eat);
					new AlertDialog.Builder(MainActivity.this)
					.setMessage(strDialogBody+aryShop[which])
					.setPositiveButton("确定了", new DialogInterface.OnClickListener() {
						
						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							/*
							 * 第一个参数:当前上下午的环境。可用getApplicationContext()或this
							 * 第二个参数:要显示的字符串
							 * 第三个参数:显示时间的长短。Toast有默认的两个LENGTH_SHORT(短)和LENGTH_LONG(长),也可以使用毫秒2000ms
							 * */
							Toast.makeText(MainActivity.this,"zheyao",Toast.LENGTH_SHORT).show();
						}
					})
					.setNegativeButton(R.string.str_ok, new DialogInterface.OnClickListener() {
						
						@Override
						public void onClick(DialogInterface dialog, int which) {
							// TODO Auto-generated method stub
							Toast toast=Toast.makeText(getApplicationContext(), "自定义显示位置的Toast", Toast.LENGTH_SHORT); 
							//第一个参数:设置toast在屏幕中显示的位置。我现在的设置是居中靠顶 
							//第二个参数:相对于第一个参数设置toast位置的横向X轴的偏移量,正数向右偏移,负数向左偏移 
							//第三个参数:同的第二个参数道理一样 
							//如果你设置的偏移量超过了屏幕的范围,toast将在屏幕内靠近超出的那个边界显示 
							toast.setGravity(Gravity.TOP|Gravity.CENTER, -50, 100); 
							//屏幕居中显示,X轴和Y轴偏移量都是0 
							//toast.setGravity(Gravity.CENTER, 0, 0); 
							toast.show();
					
						}
					}).show();
				}
			}).show();
XML文件中的定义

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">demo</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="str_button1">按我开始</string>
    <string name="str_alert_title">开始我的选择</string>
    <string name="str_alert_body">你的选择是:</string>
    <string name="str_ok">确定</string>
    <array name="what_eat">
    	<item>麻辣火锅</item>
    	<item>背景烤鸭</item>
    	<item>满汉全席</item>
    </array>
    
	
</resources>

自定义弹出对话框


可以看出,在自定义的AlertDialog对话框中,我们加入了两个TextView控件(用来显示“帐号:”和“密码:”)以及两个EditText控件(用来输入“帐号”和“密码”)。

  如何将这些控件加入到自定义的AlertDialog对话框中呢?

  首先,我们需要创建一个xml布局文件来加载这些控件。这里,我创建了一个名为“logindialog.xml”的布局文件。在该布局文件中完成对上述四个控件的布局即可,具体的实现方法如下:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"    >
    
        <TextView
            android:id="@+id/text_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:gravity="left"
            android:text="帐号:"
            android:textColor="#FFFFFF"    ></TextView>
    
        <EditText
            android:id="@+id/edit_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:gravity="left"
            android:hint="请输入帐号"
            android:inputType="none"
            android:digits="abcdefghigklmnopqrstuvwxyz1234567890_"    ></EditText>
    
        <TextView
            android:id="@+id/text_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:gravity="left"
            android:text="密码:"
            android:textColor="#FFFFFF"    ></TextView>
    
        <EditText
            android:id="@+id/edit_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:gravity="left"
            android:hint="请输入密码"
            android:inputType="textPassword"
            android:digits="1234567890"    ></EditText>

  </LinearLayout>

 完成xml布局文件的编写之后,我们需要将该xml文件动态加载并转化为View对象,然后通过AlertDialog.Builder类的setView()方法将该View对象加载进来,就可以完成自定义AlertDialog对话框的创建了。具体的实现方法如下:

/*
    * Function    :    构造函数
    * Param       :    context上下文对象
    * Author      :    博客园-依旧淡然
    */
    public LoginDialog (Context context) {
            
        this.mContext = context;
            
        //动态加载布局生成View对象
        LayoutInflater layoutInflater = LayoutInflater.from(mContext);
        View longinDialogView = layoutInflater.inflate(R.layout.logindialog, null);
            
        //获取布局中的控件
        mUserName = (EditText)longinDialogView.findViewById(R.id.edit_username);
        mPassword = (EditText)longinDialogView.findViewById(R.id.edit_password);
            
        //创建一个AlertDialog对话框
        longinDialog = new AlertDialog.Builder(mContext)
            .setTitle("登录框")
            .setView(longinDialogView)                //加载自定义的对话框式样
            .setPositiveButton("确定", this)
            .setNeutralButton("取消", this)
            .create();  
            
        longinDialog.show();
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值