Android使用对话框达成
发布时间:2021-11-25 20:25:21 所属栏目:教程 来源:互联网
导读:Android为程序员准备的四种类型的Dialog:AlertDialog、ProgressDialog、DatePickerDialog、TimePickerDialog。 使用它们是很简单的。我们经常看到,当我们按下退出键时会出来一个提示框。我们先看看它的实现。 import android.app.Activity; import 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(); } } } (编辑:济南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |