关闭

Android 对话框封装(确认/取消 )

1032人阅读 评论(0) 收藏 举报
分类:

先看效果图:



就是这样的一个简单的问答对话框,防止用户误操作,可能要多处使用,可以封装一下。

第一步:布局文件 dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:background="@null"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:orientation="vertical"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/ivIcon"
                android:layout_width="50dp"
                android:layout_height="50dp" />

            <TextView
                android:id="@+id/tvText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="New TextNet" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btnCancel"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:layout_below="@+id/tvContent"
                android:background="#DEDEDE"
                android:text="取消" />

            <View
                android:layout_width="10dp"
                android:layout_height="0dp" />

            <Button
                android:id="@+id/btnSure"
                android:layout_width="100dp"
                android:layout_height="40dp"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/tvContent"
                android:background="#3BB7B8"
                android:text="确认" />
        </LinearLayout>
    </LinearLayout>


</LinearLayout>

第二步:接口类 DialogButtonListener.java

/**
 * Developer : xiongwenwei@aliyun.com
 * Create Time :2016-5-31 10:14:19
 * Function:对话框接口类
 */
public interface DialogButtonListener {

    public void sure();//确认键
    public void cancel();//取消键
}

第三步:Dialog工具类 DialogUtil.java

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.xiong.autodetail.R;
import com.xiong.autodetail.activity.BaseActivity;

/**
 * Developer : xiongwenwei@aliyun.com
 * Create Time :2016-5-31 15:01:50
 * Function:确认操作对话框
 */
public class DialogUtil {

    private AlertDialog dlg;
    private ImageView ivIcon;
    private TextView tvText;
    private Button btnCancel,btnSure;

    private Context context;
    private int imgResId = 0;
    private String text;
    private DialogButtonListener listener;

    public void show(String text, final DialogButtonListener listener) {
        this.context = BaseActivity.getInstance();
        this.text = text;
        this.listener = listener;
        createDialog();
        setValue();
    }

    public void show( int imgResId, String text, final DialogButtonListener listener) {
        this.context = BaseActivity.getInstance();
        this.text = text;
        this.listener = listener;
        this.imgResId = imgResId;
        createDialog();
        setValue();
    }

    public void show(Context context, String text, final DialogButtonListener listener) {
        this.context = context;
        this.text = text;
        this.listener = listener;
        createDialog();
        setValue();
    }

    public void show(Context context, int imgResId, String text, final DialogButtonListener listener) {
        this.context = context;
        this.text = text;
        this.listener = listener;
        this.imgResId = imgResId;
        createDialog();
        setValue();
    }

    //创建Dialog、初始化控件
    private void createDialog() {
        dlg = new AlertDialog.Builder(context).create();
        dlg.show();
        Window window = dlg.getWindow();
        window.setContentView(R.layout.dialog);
        window.setGravity(Gravity.CENTER);//居中
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//背景透明
        ivIcon = (ImageView) window.findViewById(R.id.ivIcon);
        tvText = (TextView) window.findViewById(R.id.tvText);
        btnCancel = (Button) window.findViewById(R.id.btnCancel);
        btnSure = (Button) window.findViewById(R.id.btnSure);
    }

    //设置控件值
    private void setValue() {
        if (imgResId != 0) {
            ivIcon.setImageResource(imgResId);
        } else {
            ivIcon.setVisibility(View.GONE);
        }
        tvText.setText(text);
        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.cancel();
                dlg.dismiss();
            }
        });
        btnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.sure();
                dlg.dismiss();
            }
        });
    }
}
第四步:代码调用
DialogUtil dialogUtil = new DialogUtil();
        dialogUtil.show(R.drawable.idea, "确认修改吗?", new DialogButtonListener() {
            @Override
            public void sure() {
                ToastUtil.show("点击了确认");
            }

            @Override
            public void cancel() {
                ToastUtil.show("点击了取消");
            }
        });

其它类 BaseActivity.java

private static BaseActivity instance = null;

    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);

        instance = this;
    }

    public static BaseActivity getInstance() {
        return instance;
    }

END !







0
0
查看评论

Android:解决DatePickerDialog只有完成按钮、没有取消按钮的问题

博客源址:Android:解决DatePickerDialog只有完成按钮、没有取消按钮的问题 博客时间:2015-3-24 (一)在Android 4.0以上系统的某些手机(如本人的测试机红米Note(系统4.4.4),以及模拟器(系统4.0)),使用如下代码创建时间选择器时,页面效果如图: ...
  • Buaaroid
  • Buaaroid
  • 2015-12-16 15:04
  • 3850

android弹出对话框中带有确定和取消对话框带事件的应用

new AlertDialog.Builder(this) .setTitle("重置")    .setMessage("确定要重置角色吗?") .setPositiveButton("确定", new Dial...
  • Season_Pan
  • Season_Pan
  • 2014-09-01 10:19
  • 1570

Android 点击AlertDialog上的确定和取消按钮,使对话框不消失

Android中的AlertDialog弹出框在被点击时, 无论点击哪个按钮都会关闭窗口。
  • ncepu307
  • ncepu307
  • 2014-05-28 10:52
  • 6744

Android很好用的确认对话框(DialogFragment)

在实际的开发中,有很多地方需要用到这样的功能,执行某个操作的时候,需要弹出一个对话框来确认是否执行这个操作。所以最好在项目中写一个公共的对话框,下面我提供一个对话框的DEMO供广大Android程序猿学习: Java代码: /** * Created by admin on 2016/7/21...
  • y280903468
  • y280903468
  • 2016-08-20 16:31
  • 1421

android 系统提示对话框(AlertDialog)的使用

在按键单击事件中添加创建对话框并设置相关属性。        dialogButton=(Button)findViewById(R.id.bt_hello); dialogButton.setOnClickLis...
  • meng425841867
  • meng425841867
  • 2013-01-21 10:22
  • 112176

【Android开发】消息提示框与对话框-使用AlertDialog创建对话框

AlertDialog类的功能十分强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框,概括起来有一下4种: 1.带确定、中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加。例如,不需要中立按钮,则可以只生成带有确定和取消按钮的对话框,也可以是只需有一个...
  • u013517797
  • u013517797
  • 2015-04-12 13:58
  • 2505

Android:AlertDialog.Builder创建常见对话框

1.提示 先来说一下“提示”(提示几秒后就会消失),也许你只是想提示一下,不需要对方反馈,甚至不需要对方一定看见,也许你需要的是这个: Toast.makeText(QueryCarInfoActivity.this, "上传数据成功", Toast.LENGTH_SHORT...
  • linjingj
  • linjingj
  • 2012-08-20 17:26
  • 11880

Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解

对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法。看看各位童鞋在平时的工作中否都用到了AlertDialog的这些特性。OK,废话不多说,进入我们今天的正题。普通对话框普通对话框就是我们最最...
  • u012702547
  • u012702547
  • 2016-02-16 22:12
  • 11584

Androidt退出登录时弹出确认对话框

前几天做项目的时候,需要实现在编辑页面,没有保存编辑的信息就会弹出dialog提示你保存信息 我的项目逻辑比较简单,首先进入个人信息编辑界面,返回的方式有两种,一种是点击手机的BACK键  :onKeyDown()  ,另一种是点击自定义bar的后退图标 先说第一种点击手机Bac...
  • chendongde3100
  • chendongde3100
  • 2016-06-07 10:44
  • 1051

Android很好用的确认对话框(DialogFragment)

  • 2016-08-20 16:26
  • 21.31MB
  • 下载
    个人资料
    • 访问:102915次
    • 积分:1966
    • 等级:
    • 排名:千里之外
    • 原创:108篇
    • 转载:1篇
    • 译文:0篇
    • 评论:34条
    最新评论