对话框案例
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtn;
private Button mBtn1;
private Button mBtn2;
private Button mBtn3;
private Button mBtn4;
private Button mBtn5;
private Button mBtn6;
private Button mBtn7;
private String[] mData = {"第一条数据", "第二条数据", "第三条数据", "第四条数据", "第五条数据", "第六条数据"};
private String[] mSex = {"男", "女", "其他"};
private String[] mHobby = {"篮球", "羽毛球", "乒乓球", "滑雪", "高尔夫"};
private boolean[] mIsCheckedHobby = new boolean[mHobby.length];
private StringBuffer hobby = null;
private Dialog dialog;
private Calendar mCalendar;
private PopupWindow mPopupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtn = (Button) findViewById(R.id.button_dialog);
mBtn1 = (Button) findViewById(R.id.button_dialog1);
mBtn2 = (Button) findViewById(R.id.button_dialog2);
mBtn3 = (Button) findViewById(R.id.button_dialog3);
mBtn4 = (Button) findViewById(R.id.button_dialog4);
mBtn5 = (Button) findViewById(R.id.button_dialog5);
mBtn6 = (Button) findViewById(R.id.button_dialog6);
mBtn7 = (Button) findViewById(R.id.button_dialog7);
mBtn.setOnClickListener(this);
mBtn1.setOnClickListener(MainActivity.this);
mBtn2.setOnClickListener(MainActivity.this);
mBtn3.setOnClickListener(MainActivity.this);
mBtn4.setOnClickListener(this);
mBtn5.setOnClickListener(this);
mBtn6.setOnClickListener(this);
mBtn7.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.dialog:
showdialog();
break;
case R.id.button_dialog1:
// showSelectedialog();
mPopupWindow=new PopupWindow(MainActivity.this);
View popView=getLayoutInflater().inflate(R.layout.my_popup,null);
mPopupWindow.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
mPopupWindow.setContentView(popView);
mPopupWindow.setFocusable(false);
mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.mipmap.blue));
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.showAsDropDown(mBtn1);
break;
case R.id.button_dialog2:
showSingledialog();
break;
case R.id.button_dialog3:
showMultidialog();
break;
case R.id.button_dialog4:
showdialog1();
break;
case R.id.button_dialog5:
showMydialog();
break;
case R.id.button_dialog6:
showDatedialog();
break;
case R.id.button_dialog7:
showTimedialg();
break;
default:
break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_0){
if(mPopupWindow!=null&&mPopupWindow.isShowing()){
mPopupWindow.dismiss();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
private void showTimedialg() {
mCalendar = Calendar.getInstance();
TimePickerDialog dialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mCalendar.set(Calendar.HOUR, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Toast.makeText(getApplicationContext(), hourOfDay + ":" + minute, Toast.LENGTH_LONG).show();
// Toast.makeText(getApplicationContext(), "时间为:" + format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show();
}
}, mCalendar.get(Calendar.HOUR), mCalendar.get(Calendar.MINUTE), true);
dialog.show();
}
private void showDatedialog() {
mCalendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendar.set(year, monthOfYear, dayOfMonth);
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
Toast.makeText(getApplicationContext(), format.format(mCalendar.getTime()), Toast.LENGTH_SHORT).show();
}
}, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
private void showMydialog() {
dialog = new Dialog(MainActivity.this, R.style.NoDialogTitle);
LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.my_dialog, null);
TextView textViewTitle = (TextView) dialogView.findViewById(R.id.textview_title);
TextView textViewMessage = (TextView) dialogView.findViewById(R.id.textview_message);
Button button_cancel = (Button) dialogView.findViewById(R.id.button_cancel);
Button button_ok = (Button) dialogView.findViewById(R.id.button_ok);
textViewTitle.setText("这是新设置的标题");
textViewMessage.setText("这是新设置的内容");
button_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
button_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "点击的是确定", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
dialog.setContentView(dialogView);
dialog.show();
}
private void showdialog1() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher).setTitle("我是dialog标题").setMessage("我是内容")
.setNegativeButton("NegativeButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是NegativeButton", Toast.LENGTH_LONG).show();
}
}).setNeutralButton("NeutralButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是NeutralButton", Toast.LENGTH_LONG).show();
}
}).setPositiveButton("PositiveButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是PositiveButton", Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void showMultidialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("请选择你喜欢的项目");
builder.setMultiChoiceItems(mHobby, mIsCheckedHobby, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
mIsCheckedHobby[which] = isChecked;
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
hobby = new StringBuffer();
for (int i = 0; i < mIsCheckedHobby.length; i++) {
if (mIsCheckedHobby[i]) {
hobby.append(mHobby[i] + " ");
}
}
mBtn3.setText("您的爱好是:" + hobby);
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void showSingledialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setSingleChoiceItems(mSex, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "选的性别是" + mSex[which], Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void showSelectedialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择的dialog");
builder.setItems(mData, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "选中了第" + (which + 1) + "个", Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void showdialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher).setTitle("我是dialog标题").setMessage("我是内容")
.setNegativeButton("NegativeButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是NegativeButton", Toast.LENGTH_LONG).show();
}
}).setNeutralButton("NeutralButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是NeutralButton", Toast.LENGTH_LONG).show();
}
}).setPositiveButton("PositiveButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击的是PositiveButton", Toast.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
activity_main.XML
<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"
tools:context=".MainActivity">
<Button
android:id="@+id/button_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="最简单的Dialog"/>
<Button
android:id="@+id/button_dialog1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二个Dialog"/>
<Button
android:id="@+id/button_dialog2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第三个dialog"/>
<Button
android:id="@+id/button_dialog3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第四个Dialog"/>
<Button
android:id="@+id/button_dialog4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="蛋疼的Dialog"/>
</LinearLayout>
NoDialogTitle(values/strings下)
<style parent="@android:Theme.Dialog" name="NoDialogTitle">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
运行图