Android使用对话框实现
Android使用对话框实现
Android为程序员准备的四种类型的Dialog:AlertDialog、ProgressDialog、DatePickerDialog、TimePickerDialog。
使用它们是很简单的。我们经常看到,当我们按下退出键时会出来一个提示框。我们先看看它的实现。
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.widget.Button;
- import android.view.View;
- import android.view.View.OnClickListener;
- public class AlertDialogActivity extends Activity implements OnClickListener{
- /** Called when the activity is first created. */
- Button button;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button = (Button)findViewById(R.id.exitbutton);
- button.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- ExitDialog();
- }
- private void ExitDialog(){
- AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);
- builder.setTitle("Exit Confirm").setIcon(R.drawable.icon)
- .setMessage("Are you sure to Exit programe?")
- .setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- AlertDialogActivity.this.finish();
- }
- }).setNegativeButton("取消", new DialogInterface.OnClickListener(){
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- Dialog dialog = builder.create();
- dialog.show();
- }
- }
上面的代码还不算太糟糕,想必大家熟练后会直接 new 一个 AlertDialog.Builder对象:
- new AlertDialog.Builder(myActivity.this).setTitle().setMessage().…….create().show();
有时我们需要添加一个列表,供用户选择:
- final CharSequence[] items = {"Red", "Green", "Blue"};
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Pick a color");
- builder.setItems(items, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int item) {
- Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
- }
- });
- AlertDialog alert = builder.create();
- final CharSequence[] items = {"Red", "Green", "Blue"};
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Pick a color");
- builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int item) {
- Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
- }
- });
- AlertDialog alert = builder.create();
以上是Android dev Guide上的源码。不需要多余的解释。下面看看建立一个自定义的对话框需要的步骤:
1:为自定义的对话框准备一个布局Layout;
- <?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="match_parent">
- <TextView
- android:id="@+id/textview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="请输入文本"
- />
- <EditText
- android:id="@+id/edittext"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoText="false"
- />
- </LinearLayout>
2:将这个布局导入到一个View 中;
3:创建一个Builder 对象;
4:设置成我们的视图View;
- LayoutInflater inflater = LayoutInflater.from(ctx);
- view = inflater.inflate(R.layout.dialog, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setView(view);
5:设置按钮 和 监听器;
- builder.setTitle("这是一个自定义的对话框");
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- EditText edittext = (EditText)view.findViewById(R.id.edittext);
- enterText = edittext.getText().toString();
- button.setText(enterText);
- }
- });
6:用Builder 创建一个Dialog;
7:显示这个Dialog。
- AlertDialog dialog = builder.create();
- builder.show();
下面是全部代码。很随意,很简单,所以很杂乱。
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.widget.Button;
- import android.widget.EditText;
- import android.view.LayoutInflater;
- import android.view.View;
- public class MyDialogActivity extends Activity implements View.OnClickListener{
- /** Called when the activity is first created. */
- Button button;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button = (Button)findViewById(R.id.button);
- button.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- TextDialog textDialog = new TextDialog((Button)v,this);//我将Button传了进去,这是获得修改文本的方法
- }
- private class TextDialog extends AlertDialog{
- private String enterText;
- private Context ctx;
- private View view;
- Button button;
- protected TextDialog(Button btn,Context context) {
- super(context);
- ctx = context;
- button = btn;
- LayoutInflater inflater = LayoutInflater.from(ctx);
- view = inflater.inflate(R.layout.dialog, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setView(view);
- builder.setTitle("这是一个自定义的对话框");
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- EditText edittext = (EditText)view.findViewById(R.id.edittext);
- enterText = edittext.getText().toString();
- button.setText(enterText);//点击确定后,按钮的文本会被修改
- }
- });
- AlertDialog dialog = builder.create();
- builder.show();
- }
- }
- }
|
评论暂时关闭