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

来源:互联网 发布:源码网 编辑:程序博客网 时间:2024/04/29 07:53

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 {@Overrideprotected 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(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubopenDialog1();//利用AlertDialog.Builder类来创建带列表的对话框的方法}});//为按钮二添加单击事件监听器button2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubopenDialog2();//利用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() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubToast.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.xmlbuilder.setView(v);//设置对话框显示的视图//添加按钮builder.setPositiveButton("弹出消息提示框",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stubToast.makeText(MainActivity.this, "向上吧!少年!!!", Toast.LENGTH_LONG).show();//弹出消息提示框}});builder.create().show();//创建并显示对话框}@Overridepublic 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;}@Overridepublic 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.这样就写好了这个例子,接下来保存文件后运行此项目,运行效果如下:

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

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

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

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

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

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


0 0