论坛首页 移动开发技术论坛

android可重复利用的自定义提示确定框

浏览 1231 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-10-24  

           一个可以重复使用的消息提示确认框,不用每次创建对话框,获取对话框的确定以及取消按钮,减少代码量,还能体现很好的封装性。

     java代码,创建自定义对话框基础类:

package com.xjw.translate;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
	/**      
 * 项目名称:translate  
 * 实现功能:  
 * 类名称:ConfirmDialog   
 * 类描述:(该类的主要功能)
 * 创建人:徐纪伟 
 * E-mail: xujiwei558@126.com
 * 创建时间:2014年10月19日 下午7:28:39   
 * 修改人:   
 * 修改时间:   
 * 修改备注:   
 * @version    
 */
public class ConfirmDialog extends Dialog implements android.view.View.OnClickListener{
	
	private Button btnOk,btnCancel;
	private TextView tvTitle,tvMessgae;
	private String title, message;
	private OnOkButtonClickListener listener;
	public ConfirmDialog(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	public ConfirmDialog(Context context, String title, String message, OnOkButtonClickListener listener) {
		//设置对提示框的样式,比如去除边框背景,添加自定义图片等
		super(context,R.style.ConfirmDialog);
		this.title = title;
		this.message = message;
		this.listener = listener;
		
	}
	
	@Override
		protected void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			//设置提示框的样式布局
			setContentView(R.layout.confirm_dialog);
			btnOk = (Button)findViewById(R.id.btn_ok);
			btnCancel = (Button)findViewById(R.id.btn_cancel);
			btnOk.setOnClickListener(this);
			btnCancel.setOnClickListener(this);
			tvTitle = (TextView)findViewById(R.id.tv_confirm_title);
			tvMessgae = (TextView)findViewById(R.id.tv_confirm_messgae);
			tvTitle.setText(title);
			tvMessgae.setText(message);
		}

	/**
	 * 定义确定按钮和取消按钮的事件
	 */
	@Override
	public void onClick(View v) {
		
		switch (v.getId()) {
		case R.id.btn_ok:
			//点击确定按钮时,触发点击回调事件
			listener.OnOkButtonClick();
			break;
		case R.id.btn_cancel:
			dismiss();
			break;

		default:
			break;
		}
	}
	
	/**
		* @类名称: OnOkButtonClickListener
		* @描述: 使用接口回调的方式监听确定按钮点击事件
		* @throws 
		* @author 徐纪伟
		* 2014年10月24日下午10:12:29
	 */
	public interface OnOkButtonClickListener{
		public void OnOkButtonClick();
	}

	public Button getBtnOk() {
		return btnOk;
	}

	public void setBtnOk(Button btnOk) {
		this.btnOk = btnOk;
	}

	public Button getBtnCancel() {
		return btnCancel;
	}

	public void setBtnCancel(Button btnCancel) {
		this.btnCancel = btnCancel;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public OnOkButtonClickListener getListener() {
		return listener;
	}

	public void setListener(OnOkButtonClickListener listener) {
		this.listener = listener;
	}
	
	
		

}

 

    提示框布局文件confirm_dialog.xml,里面包含标题,显示内容,以及两个按钮

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/exit_layout"
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_confirm_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:padding="5dp"
            android:textColor="#333"
            android:textSize="20sp"
            android:text="提示信息" />
        
        <TextView
            android:id="@+id/tv_confirm_messgae"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#333"
            android:layout_marginTop="1dp"
            android:padding="10dp"
            android:textSize="16sp"
            android:gravity="center_horizontal"
            android:text="提示信息" /> 
        

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"           
            android:layout_marginTop="58dp"
            android:layout_marginBottom="8dp"
             >
            
            <Button
              android:id="@+id/btn_ok"
              android:layout_width="110dp"
              android:layout_height="wrap_content"
              android:text="是"
              android:textSize="16sp"
              android:textColor="#fff"
              android:background="@drawable/btn_selector"
              android:gravity="center"
			  android:onClick="exitbutton0"
              />
            
            <Button
              android:id="@+id/btn_cancel"
              android:layout_width="110dp"
              android:layout_height="wrap_content"
              android:layout_marginLeft="10dp"
              android:text="否"
              android:textSize="16sp"
              android:textColor="#333"
              android:background="@drawable/selector_btn_cancel"
              android:gravity="center"
			  android:onClick="exitbutton1"
              />
        </LinearLayout>

    </LinearLayout>

       下面是提示框的样式:

    <style name="ConfirmDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item> 
        <item name="android:windowBackground">@drawable/confirm_dialog_bg2</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

        使用方法:

         

ConfirmDialog confirmDialog = new ConfirmDialog(context, resource.getString(R.string.confirm_title_normal), resource.getString(R.string.clear_history), new ConfirmDialog.OnOkButtonClickListener() {
					
					@Override
					public void OnOkButtonClick() {
						//此处可以填写确定按钮的事件响应
					}
				});
				confirmDialog.show();

 

      效果预览:



 

  • 大小: 9.8 KB
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics