转帖请注明本文出自tyler520free的博客(http://blog.csdn.net/tyler520free/article/details/40144989),请尊重他人的辛勤劳动成果,谢谢!
Android中如果要实现模态对话框,普通的dialog是做不到的。有两种方式解决:
1.activity中可以通过popupwindow实现。
2.service中用activity界面实现。
第二种比较简单,就不多说了。具体介绍第一种,先上效果图。
代码比较简单:
package com.tyler.myalertdialog;
import com.example.myalertdialog.R;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
public class TestAlertDialog extends Activity {
Button btnPopupWindow;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//定义按钮
btnPopupWindow=(Button)this.findViewById(R.id.Button01);
btnPopupWindow.setOnClickListener(new ClickEvent());
}
//统一处理按键事件
class ClickEvent implements OnClickListener{
@Override
public void onClick(View v) {
if(v==btnPopupWindow)
{
showPopupWindow(TestAlertDialog.this,
TestAlertDialog.this.findViewById(R.id.Button01));
}
}
}
public void showPopupWindow(Context context,View parent){
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View vPopupWindow=inflater.inflate(R.layout.popupwindow, null, false);
final PopupWindow pw= new PopupWindow(vPopupWindow,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,true);
//OK按钮及其处理事件
Button btnOK=(Button)vPopupWindow.findViewById(R.id.dialog_ok);
btnOK.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//设置文本框内容
}
});
//Cancel按钮及其处理事件
Button btnCancel=(Button)vPopupWindow.findViewById(R.id.dialog_cancel);
btnCancel.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
pw.dismiss();//关闭
}
});
//显示popupWindow对话框
pw.showAtLocation(parent, Gravity.CENTER, 0, 0);
}
}
有兴趣的可以点击下载源码。
http://download.csdn.net/detail/tyler520free/8044287