哪些年遇到过的Andriod问题(4)对话框 dialog

时间:2023-01-13 08:02:15

对话框一共有三个按键:

setPositiveButton确认;setNegativeButton取消;setNeutralButton一般

中间的询问内容可以是setMessage也可以是控件(setView/ setMultiChoiceItems/ setItems),还可以是自定义的一个布局。

测试过可以直接使用,但是在Eclipse中提示代码有问题,那就是你的引用问题,如:DialogInterface.OnClickListener()


哪些年遇到过的Andriod问题(4)对话框 dialog
//创建对话框方法dialog()
	  protected void dialog() {
	    AlertDialog.Builder builder = new Builder(Main.this);
	    builder.setMessage("确认退出吗?");
	    builder.setTitle("提示");
	    builder.setPositiveButton("确认", new OnClickListener() {
	     @Override
	     public void onClick(DialogInterface dialog, int which) {
	      dialog.dismiss();
	      Main.this.finish();
	     }
	    });
	    builder.setNegativeButton("取消", new OnClickListener() {
	     @Override
	     public void onClick(DialogInterface dialog, int which) {
	      dialog.dismiss();
	     }
	    });
	    builder.create().show();
	   }
	   
	  //在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法
	  public boolean onKeyDown(int keyCode, KeyEvent event) {
	    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
	     dialog();
	    }
	    return false;}

哪些年遇到过的Andriod问题(4)对话框 dialog

//改变了对话框的图表,添加了三个按钮
	Dialog dialog = new AlertDialog.Builder(this).setIcon(
	     android.R.drawable.btn_star).setTitle("喜好调查").setMessage(
	     "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢",
	     new OnClickListener() {
	      @Override
	      public void onClick(DialogInterface dialog, int which) {
	       // TODO Auto-generated method stub
	       Toast.makeText(Main.this, "我很喜欢他的电影。",
	         Toast.LENGTH_LONG).show();
	      }
	     }).setNegativeButton("不喜欢", new OnClickListener() {
	    @Override
	    public void onClick(DialogInterface dialog, int which) {
	     // TODO Auto-generated method stub
	     Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG)
	       .show();
	    }
	   }).setNeutralButton("一般", new OnClickListener() {
	    @Override
	    public void onClick(DialogInterface dialog, int which) {
	     // TODO Auto-generated method stub
	     Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG)
	       .show();
	    }
	   }).create();dialog.show();
哪些年遇到过的Andriod问题(4)对话框 dialog
//信息内容是一个简单的View类型
	new AlertDialog.Builder(this).setTitle("请输入").setIcon(
	     android.R.drawable.ic_dialog_info).setView(
	     new EditText(this)).setPositiveButton("确定", null).setNegativeButton("取消", null).show();
哪些年遇到过的Andriod问题(4)对话框 dialog
new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems(
		     new String[] { "Item1", "Item2" }, null, null)
		     .setPositiveButton("确定", null).setNegativeButton("取消", null).show();
哪些年遇到过的Andriod问题(4)对话框 dialog
//信息内容是一组多选框
	new AlertDialog.Builder(this).setTitle("单选框").setIcon(
	     android.R.drawable.ic_dialog_info).setSingleChoiceItems(
	     new String[] { "Item1", "Item2" }, 0,
	     new DialogInterface.OnClickListener() {
	      public void onClick(DialogInterface dialog, int which) {
	       dialog.dismiss();
	      } }).setNegativeButton("取消", null).show();
哪些年遇到过的Andriod问题(4)对话框 dialog
new AlertDialog.Builder(this).setTitle("列表框").setItems(
		     new String[] { "Item1", "Item2" }, null).setNegativeButton("确定", null).show();
哪些年遇到过的Andriod问题(4)对话框 dialog
//信息内容是一个自定义的布局
	//1.布局文件
	<?xml version="1.0" encoding="utf-8"?>
	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	 android:layout_height="wrap_content" android:layout_width="wrap_content"
	 android:background="#ffffffff" android:orientation="horizontal"
	 android:id="@+id/dialog">
	 <TextView android:layout_height="wrap_content"
	   android:layout_width="wrap_content"
	  android:id="@+id/tvname" android:text="姓名:" />
	 <EditText android:layout_height="wrap_content"
	  android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>
	</LinearLayout>
	//2.调用代码
	LayoutInflater inflater = getLayoutInflater();
	   View layout = inflater.inflate(R.layout.dialog,
	     (ViewGroup) findViewById(R.id.dialog));
	   new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout)
	     .setPositiveButton("确定", null).setNegativeButton("取消", null).show();
哪些年遇到过的Andriod问题(4)对话框 dialog

8 以上几种对话框有点难了吧(初学者),这是种简单的提示框(为什么简单?因为代码和打开一般的界面一样)

//1. 为什么简单?因为代码和打开一般的界面一样
		bOpenCD = (Button) findViewById(R.id.maOpenCD);
		bOpenCD.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				Intent myIntent = new Intent();
				myIntent.setClass(MainActivity.this, CustomDialog.class);
				MainActivity.this.startActivity(myIntent);
			}
		});
	//2.修改manifest文件
        <activity
            android:name=".CustomDialog"
            android:label="@string/CDlable" 
            android:theme = "@android:style/Theme.Dialog"><!-- @style/Transparent -->
        </activity>
哪些年遇到过的Andriod问题(4)对话框 dialog

9透明提示窗体

摘于http://blog.csdn.net/sodino/article/details/5822147

//1.先在res/values下建colors.xml文件,写入
<resources>
    <color name="transparent">#9000</color>
</resources>
//这个值设定了整个界面的透明度,为了看得见效果,现在设为透明度为56%(9/16)左右。

//2.再在res/values/下建styles.xml,设置程序的风格
<resources>
    <style name="Transparent">
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
    </style>
</resources>
//3.最后一步,把这个styles.xml用在相应的Activity上。即在AndroidManifest.xml中的任 意<activity>标签中添加
<activity
            android:name=".CustomDialog"
            android:label="@string/CDlable" 
            android:theme = "@style/Transparent"><!--  @android:style/Theme.Dialog-->
        </activity>