【原创】Android 对话框的使用
对话框即Dialog 、google的官方解释:A dialog is usually a small window that appears in front of the current Activity. The underlying Activity loses focus and the dialog accepts all user interaction.
翻译过来就是:对话框是当前Activity之上的小窗口,此时对话框接受用户的操作而Activity得不到用户的反馈。
一般而言我们不会直接实例化Dialog 我们用的是Dialog的子类 下面是一些Dialog的常用子类
对于对话框:大致分三步:创建对话框、显示对话框show()、dismiss()对话框
AlertDialog:
A dialog that can manage zero, one, two, or three buttons, and/or a list of selectable items that can include checkboxes or radio buttons. The AlertDialog is capable of constructing most dialog user interfaces and is the suggested dialog type
progressDialog:
A dialog that displays a progress wheel or progress bar. Because it's an extension of the AlertDialog, it also supports buttons.
DatePickerDialog:
A dialog that allows the user to select a date.
TimePickerDiaog:
A dialog that allows the user to select a time.
当然我们也会使用自己自定义的对话框。
各种对话框使用如下:
代码如下 点击相应按钮创建对话框
package leemo.DialogEp;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/*
* 练习操作Dialog的使用
*/
public class DialogEpActivity extends Activity {
/** Called when the activity is first created. */
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// setContentView(R.layout.main);
Button btalert = (Button) findViewById(R.id.btalert);
btalert.setText("点击创建Alert Dialog");
btalert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
createAlertDialog();
}
});
Button btlist = (Button) findViewById(R.id.btlist);
btlist.setText("点击创建ListDialog");
btlist.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
createListDialog();
}
});
Button btcb = (Button) findViewById(R.id.btcb);
btcb.setText("点击创建带checkbox的对话框");
btcb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
createSingleCheckBoxDialog();
}
});
Button btpb = (Button) findViewById(R.id.btpb);
btpb.setText("点击创建进度条");
btpb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
createpbDialog();
}
});
Button btcusdialog = (Button) findViewById(R.id.btcusdialog);
btcusdialog.setText("点击创建自定义的对话框");
btcusdialog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
createcusDialog();
}
});
}
public void createAlertDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure want to exit")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
DialogEpActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
builder.create().show();
}
public void createListDialog() {
final CharSequence[] items = { "Red", "Blue", "Green" };
AlertDialog.Builder builder = new AlertDialog.Builder(
DialogEpActivity.this);
builder.setTitle("Select A Color");
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplication(), items[which],
Toast.LENGTH_LONG).show();
}
});
builder.create().show();
}
public void createSingleCheckBoxDialog() {
final CharSequence[] items = { "Red", "Bule", "Green" };
AlertDialog.Builder bd = new AlertDialog.Builder(DialogEpActivity.this);
bd.setTitle("Select A Color");
bd.setSingleChoiceItems(items, -1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
Toast.makeText(getApplicationContext(), items[which],
Toast.LENGTH_SHORT).show();
}
});
bd.create().show();
}
public void createpbDialog() {
ProgressDialog dialog = ProgressDialog.show(DialogEpActivity.this,
"loading", "loading please waiting");
dialog.show();
}
public void createcusDialog() {
Context mContext = DialogEpActivity.this;
Dialog dialog = new Dialog(mContext);
dialog.setContentView(R.layout.dialog);
dialog.setTitle("Custom Dialog");
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.ic_launcher);
Button btcs = (Button) dialog.findViewById(R.id.btcs);
btcs.setText("点击创建Toast");
btcs.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(DialogEpActivity.this, "is okay",
Toast.LENGTH_SHORT).show();
}
});
dialog.show();
}
}
创建自定义对话框时,要自己定义布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dp"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
/>
<Button
android:id="@+id/btcs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
效果如下图



浙公网安备 33010602011771号