Android如何实现模态Dialog

转帖请注明本文出自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




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值