Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框

1.首先,新建一个安卓项目,项目名称为DialogTest1,首先,进行界面布局,打开布局文件res下的layout文件夹下的activity_main.xml文件,附上activity_main的代码:

<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:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button1"/>
    
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button2"/>
    
</LinearLayout>

2.我先把所要用到的字符串资源文件strings.xml文件的代码附上,这个文件放在res下的values文件夹下:

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

    <string name="app_name">DialogTest1</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
	<string name="button1">点击按钮显示带列表的对话框</string>
	<string name="button2">点击按钮设置自己所布局的对话框</string>
	<string name="textView">作者:小熊。我是一个快乐的小熊,在程序的世界里慢慢的摸索,我必须提升自己的编程能力,充实自己,让我们一起加油,我们都可以的!!!</string>
</resources>

3.在布局文件activity_main.xml文件中有个按钮是点击按钮设置自己所布局的对话框,所以我在res目录下的layout文件夹下新建一个Android xml文件,名字为item,新建后打开item.xml文件,在这里我们可以把想显示在对话框的东西放上去,这里我只放了一个TextView文本框控件,你也可以添加EditText编辑框控件,但这要根据你自己的需要,用不到的话就别添加了,附上item.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" >
    
	<TextView
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:text="@string/textView"
	    android:textColor="#99CCFF"/>
	
</LinearLayout>


4.接下来就该写点击按钮时显示相应的对话框了,打开src文件夹包下的MainActivity.java文件,附上MainActivity.java文件的代码,有简单注释,最主要靠我们理解了:

package com.example.dialogtest1;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button1=(Button)findViewById(R.id.button1);//获取布局文件的第一个按钮控件
		Button button2=(Button)findViewById(R.id.button2);//获取布局文件的第二个按钮控件
		
		//为按钮一添加单击事件监听器
		button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				openDialog1();//利用AlertDialog.Builder类来创建带列表的对话框的方法
			}
			
		});
		
		//为按钮二添加单击事件监听器
		button2.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				openDialog2();//利用AlertDialog.Builder类来创建自己所定义布局的对话框的方法
			}
			
		});
	}

	/*利用AlertDialog.Builder类来创建带列表的对话框*/
	protected void openDialog1(){
		final String[] items={"苹果","香蕉","西瓜","梨","草莓","葡萄"};
		AlertDialog.Builder builder=new Builder(MainActivity.this);//实例化AlertDialog.Builder类
		builder.setIcon(R.drawable.ic_launcher);//设置对话框图标
		builder.setTitle("请选择你喜欢吃的水果");//设置对话框标题
		//添加列表项
		builder.setItems(items, new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "你喜欢吃的水果为"+items[which], Toast.LENGTH_SHORT).show();//弹出消息提示框,选择什么水果就弹出你喜欢吃的水果
			}
		});
		builder.create().show();//创建并显示对话框
	}
	
	/*利用AlertDialog.Builder类来创建自己所定义布局的对话框的方法*/
	protected void openDialog2(){
		AlertDialog.Builder builder=new Builder(MainActivity.this);
		builder.setIcon(R.drawable.ic_launcher);//设置对话框图标
		builder.setTitle("关于作者");
		final View v=LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null); //使用LayoutInflater来获取我们所创建的布局文件item.xml
		builder.setView(v);//设置对话框显示的视图
		//添加按钮
		builder.setPositiveButton("弹出消息提示框",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "向上吧!少年!!!", Toast.LENGTH_LONG).show();//弹出消息提示框
			}
		});
		builder.create().show();//创建并显示对话框
	}
	
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

}


5.这样就写好了这个例子,接下来保存文件后运行此项目,运行效果如下:

Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框_第1张图片

选择第一个按钮,点击按钮显示带列表的对话框,效果如下:

Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框_第2张图片

点击选择你喜欢吃的水果,我喜欢吃梨,就点梨了,弹出消息提示:

Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框_第3张图片

接下来点击第二个按钮,这里显示了item.xml文件的TextView控件,效果如下:

Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框_第4张图片

在这个提示对话框中点击弹出消息提示框按钮,效果如下,弹出了提示消息:

Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框_第5张图片

6.以上就是使用AlertDialog.Builder类来创建带列表的提示对话框和自己所定义的布局文件的提示对话框,在这里,其实还有两个方法是用来生成列表对话框,一种是为对话框添加单选列表项,一种是为对话框添加多选列表项,方法分别为:setSingleChoiceItems(),setMultiChoiceItems(),使用方法和以上为对话框添加列表项的方法一样,这个就由大家自己想想,反思了,就这样。

7.以上内容仅供大家学习参考,写得不好,请见谅,如果有什么错误请提出,谢谢!


你可能感兴趣的:(android,安卓,对话框)