精华内容
下载资源
问答
  • QT自定义dialog提示

    2020-11-23 22:32:26
    纯代码编写提示窗,无UI文件。是https://blog.csdn.net/sinat_33419023/article/details/110009514 代码对应的项目文件
  • android自定义透明对话框,透明提示框自定义Dialog.zip
  • Android开发自定义Dialog弹窗提示,ke自定义样式、标题、内容......
  • 今天是5月7号,真的好久没有写博客了,时光匆匆,我总感觉自己忙忙碌碌似的,静想片刻确实是挺忙的,但是在繁忙当中却缺少了总结归纳,相信大家都知道总结归纳的重要性了,今天我要和大家分享我的自定义Dialog提示框,...

    前言:

    今天是5月7号,真的好久没有写博客了,时光匆匆,我总感觉自己忙忙碌碌似的,静想片刻确实是挺忙的,但是在繁忙当中却缺少了总结归纳,相信大家都知道总结归纳的重要性了,今天我要和大家分享我的自定义Dialog提示框,仿QQ浏览器版本更新提示框,查看其源码可知Dialog是对话框的基类,Dialog在开发中是非常常见的,Android系统为我们提供的样式有时却不能满足我们的需求,所以这时就需要我们去自定义了。

    一、自定义对话框样式:

    在styles.xml中

     

    <!-- 定义对话框样式 -->
    <style name="Dialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
    </style>
    

    其解释为:WindowBackground为透明,因为要用到自定义的布局,所以必须要把系统的背景颜色设置为透明;WindowNoTitle为true,设置为无标题,因为布局完全是自己自定义的了,WindowIsFloating为true,浮于其他界面之上。好了,这样就简单设置了自定义对话框的样式了。

     

     

    二、自定义对话框布局:

     

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
        android:background="#ffffff">
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:src="@mipmap/custom"
            android:layout_gravity="center"
            android:scaleType="fitXY"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="新版发布"
            android:textSize="20sp"
            android:textColor="#000"
            android:gravity="center"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/tv_tips"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="16sp"
            android:singleLine="false"
            android:layout_centerInParent="true"
            android:text="尊敬的用户,感谢您对QQ浏览器的支持,特邀您优先体验7.5.0版本beta版限量公测包,快来体验吧!"/>
    
        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            android:background="#ccc"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">
    
            <TextView
                android:id="@+id/tv_cancel"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:paddingTop="11dp"
                android:paddingBottom="11dp"
                android:gravity="center"
                android:text="以后再说"
                android:textSize="18sp"
                android:textColor="#000"
                android:background="@drawable/shape_bg"/>
            <View
                android:layout_width="0.5dp"
                android:layout_height="match_parent"
                android:background="#ccc"/>
    
            <TextView
                android:id="@+id/tv_update"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:gravity="center"
                android:paddingTop="11dp"
                android:paddingBottom="11dp"
                android:textSize="18dp"
                android:text="立即更新"
                android:textColor="#1586f2"
                android:background="@drawable/shape_bg"/>
    
        </LinearLayout>
    
    </LinearLayout>

    效果图仿QQ浏览器版本更新的布局。

     

     

    三、创建Dialog,并关联自定义的样式和布局:

     

    final Dialog customDialog = new Dialog(this, R.style.Dialog);
    View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_custom, null);
    TextView btn_update = (TextView) dialogView.findViewById(R.id.tv_update);
    TextView btn_cancel = (TextView) dialogView.findViewById(R.id.tv_cancel);
    //将自定义布局加载到dialog上
    customDialog.setContentView(dialogView);
    
    btn_cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            customDialog.cancel();
        }
    });
    btn_update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "点击了确定", Toast.LENGTH_SHORT).show();
        }
    });
    
    //设置点击dialog外是否可以取消
    customDialog.setCancelable(false);
    customDialog.show();

     

     

     

    到这里就完成了自定义Dialog了,最后还不完美,还可以设置Dialog的显示大小和位置,如所示代码:

     

    //获得dialog的window窗口
    Window window = customDialog.getWindow();
    //设置dialog在屏幕中间
    window.setGravity(Gravity.CENTER);
    //获得window窗口的属性
    WindowManager.LayoutParams lp = window.getAttributes();
    //设置窗口高度为包裹内容
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    //宽度设置为屏幕的0.7
    Display defaultDisplay = getWindowManager().getDefaultDisplay();//
    lp.width = (int) (defaultDisplay.getWidth() * 0.7);
    //将设置好的属性set回去
    window.setAttributes(lp);

    这里我把Dialog居中(Gravity.CENTER)显示了,当然还可以显示在底部等其他位置;然后就是显示宽和高了,当然要先获取屏幕的窗口大小才能设置其宽高。

     

     

    自定义Dialog对话框差不多就是这样了,最后就看看效果图吧!

     

     

     

     

    最后加上本案例的demo地址:https://gitee.com/zsml/CustomDialog

     

    支持我的话可以关注下我的公众号,也欢迎大家投稿~

    扫一扫关注我的微信公众号:程序猿在广东

     

     

     

     

     

     

     

    展开全文
  • qml自定义信息提示框

    2017-10-28 16:21:45
    qml 自定义 信息提示框 消息提示框 可以根据信息的多少大小自动调整
  • 主要介绍了Android 自定义一套 Dialog通用提示框 (代码库),需要的朋友可以参考下
  • android自定义透明对话框,透明提示框自定义Dialog
  • 小程序自定义dialog模态

    千次阅读 2019-05-16 17:59:15
    新建路径:/components/dialog/confirm 新建文件:confirm.js,confirm.json,confirm.wxml,confirm.wxss confirm.json { "component": true, "usingComponents": { } } confirm.wxss /**confirm.wxss**/ ....

    其实,小程序是提供了简单的提示框的,但是类似弹出提交表单的就没有,下面这个基础dialog框,可以作为参考,去生成更复杂的
    样式:
    在这里插入图片描述
    在这里插入图片描述
    新建路径:/components/dialog/confirm
    新建文件:confirm.js,confirm.json,confirm.wxml,confirm.wxss

    confirm.json

    {
      "component": true,
      "usingComponents": {
        
      }
    }
    

    confirm.wxss

    /**confirm.wxss**/
    .chain-mask{
      position: fixed;
      z-index: 1000;
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
      background: rgba(0, 0, 0, 0.6);
    }
    
    .chain-dialog {
      position: fixed;
      z-index: 5000;
      width: 80%;
      max-width: 600rpx;
      top: 50%;
      left: 50%;
      -webkit-transform: translate(-50%, -50%);
      transform: translate(-50%, -50%);
      background-color: #ffffff;
      text-align: center;
      border-radius: 6rpx;
      overflow: hidden;
    }
    
    .chain-dialog-title {
      padding: 1.3em 1.6em 0.5em;
      font-weight: 400;
      font-size: 36rpx;
    }
    
    .chain-dialog-content {
      padding: 0 1.6em 0.8 em;
      min-height: 80rpx;
      font-size: 30rpx;
      line-height: 1.3;
      word-wrap: break-word;
      word-break: break-all;
      color: #808080;
    }
    
    .chain-dialog-btn-view {
      position: relative;
      line-height: 100rpx;
      font-size: 40rpx;
      display: -webkit-box;
      display: -webkit-flex;
      display: flex;
    }
    
    .chain-dialog-btn-view::after {
      content: " ";
      position: absolute;
      left: 0;
      top: 0;
      right: 0;
      height: 1px;
      border-top: 2rpx solid #D5D5D6;
      color: #D5D5D6;
      -webkit-transform-origin: 0 0;
      transform-origin: 0 0;
      -webkit-transform: scaleY(0.5);
      transform: scaleY(0.5)
    }
    
    .chain-dialog-btn {
      position: relative;
      display: block;
      -webkit-box-flex: 1;
      -webkit-flex: 1;
      flex: 1;
      color: #353535;
      line-height: 100rpx;
      font-size: 40rpx;
      text-decoration: none;
      -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    }
    
    .chain-dialog-btn-ok {
      color: #09BB07;
    }
    
    .chain-dialog-btn:active {
      background-color: #eee;
    }
    
    .chain-dialog-btn::after {
      content: " ";
      position: absolute;
      left: 0;
      top: 0;
      width: 2rpx;
      bottom: 0;
      border-left: 2rpx solid #D5D5D6;
      color: #D5D5D6;
      -webkit-transform-origin: 0 0;
      transform-origin: 0 0;
      -webkit-transform: scaleX(0.5);
      transform: scaleX(0.5);
    }
    

    confirm.wxml

    <!--confirm.wxml-->
    <view hidden='{{!isShow}}'>
      <!-- 遮罩层 -->
      <view class="chain-mask"></view>
      <view class='chain-dialog'>
        <view class='chain-dialog-title'>{{title}}</view>
        <view class='chain-dialog-content'>{{content}}</view>
        <view class='chain-dialog-btn-view'>
          <!-- 第一种事件调用 -->
          <!-- 
          <view class='chain-dialog-btn' catchtap='_cancelEvent'>{{cancelText}}</view>
          <view class='chain-dialog-btn chain-dialog-btn-ok' catchtap='_okEvent'>{{okText}}</view> 
          -->
          <!-- 第二种事件调用 -->
          <view class='chain-dialog-btn' bindtap='_cancelClick'>{{cancelText}}</view>
          <view class='chain-dialog-btn chain-dialog-btn-ok' bindtap='_okClick'>{{okText}}</view>
        </view>
      </view>
    </view>
    

    confirm.js

    // confirm.js
    Component({
      /**
       * 属性列表
       */
      properties: {
        title: {
          type: String,
          value: '标题'
        },
        content: {
          type: String,
          value: '内容'
        },
        cancelText: {
          type: String,
          value: '取消'
        },
        okText: {
          type: String,
          value: '确定'
        }
      },
      /**
       * 页面数据
       */
      data: {
        isShow: false,
        fail: function(){},
        success: function(){}
      },
      /**
       * 方法
       */
      methods: {
        // ---------- 第一种事件回调 ----------
        /**
         * 关闭弹窗
         */
        close(){
          this.setData({
            isShow: false
          })
        },
        /**
         * 展示弹窗
         */
        show(){
          this.setData({
            isShow: true
          })
        },
        /**
         * 接收取消事件,并将事件bind到调用子组件上
         */
        _cancelEvent(){
          this.triggerEvent('cancelEvent');
        },
        _okEvent(){
          this.triggerEvent('okEvent');
        },
        // ---------- 第二种事件回调 ----------
        /**
         * 展示弹窗
         */
        showNew({ isShow = true, title = '标题', content = '内容', cancelText = '取消', okText = '确定', fail = null, success = null }) {
          this.setData({
            isShow: isShow,
            title: title,
            content: content,
            cancelText: cancelText,
            okText: okText,
            fail: fail,
            success: success
          })
        },
        /**
         * 取消按钮点击
         */
        _cancelClick(){
          this.data.fail()
        },
        /**
         * 确定按钮点击
         */
        _okClick(){
          this.data.success()
        }
      }
    })
    

    使用

    account.json

    {
      "backgroundTextStyle": "light",
      "navigationBarBackgroundColor": "#04243D",
      "navigationBarTitleText": "账户中心",
      "navigationBarTextStyle": "white",
      "usingComponents": {
        "dialog-confirm": "/components/dialog/confirm/confirm"
      }
    }
    

    account.wxml

    <!--account.wxml-->
    
    <view>
    	<!-- 对应第一种事件调用 -->
    	<!-- 
      <dialog-confirm id='dialogConfirm' bind:cancelEvent="cancelEvent" bind:okEvent="okEvent"></dialog-confirm>
      -->
      <!-- 对应第二种事件调用 -->
    	<!-- 
      <dialog-confirm id='dialogConfirm'></dialog-confirm>
      -->
    </view>
    

    account.js

    // account.js
    import http from '../../utils/http.js'
    import util from '../../utils/util.js'
    import { user } from '../../utils/urlConfig.js'
    
    // 正则表达式
    
    Page({
      data: {
       
      },
      onLoad: function () {
        this.dialogConfirm = this.selectComponent('#dialogConfirm')
      },
      /**
       * 退出系统
       */
      logout(){
      	/**
         * 第一种调用
         */
        // this.dialogConfirm.setData({
        //   title: '温馨提示',
        //   content: '确定退出系统吗?',
        //   cancelText: '取消',
        //   okText: '确定'
        // })
        // this.dialogConfirm.show()
        // this.dialogConfirm.close()
        /**
         * 第二种调用
         */
        this.dialogConfirm.showNew({
          isShow: true, 
          title: '温馨提示', 
          content: '确定退出系统吗', 
          cancelText: '取消', 
          okText: '确定', 
          fail: function(){
            console.log('回调取消')
          },
          success: function(){
            console.log('回调成功')
          }
        })
      }
    })
    
    
    展开全文
  • js 自定义提示框

    2013-06-28 09:32:35
    Js 自定义提示框,几乎没有图片,帅气的提示风格,提示,警示,确认三种提示框
  • 自定义dialog实例demo 1、布局 dialog_alert <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="@dimen/dp_550

    前言

    最近项目中觉的Android系统的dialog样式太丑,确实也不太好看,就打算自定义一个dialog来使用。

    自定义dialog实例demo

    1、布局
    dialog_alert

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="@dimen/dp_550"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/new_dialog_bg"
        android:orientation="vertical">
    
    	<!--标题-->
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_80"
            android:layout_marginLeft="@dimen/dp_60"
            android:layout_marginRight="@dimen/dp_60"
            android:gravity="center|bottom"
            android:text="@string/title"
            android:textColor="@color/color_222222"
            android:textSize="@dimen/dp_32"
            android:textStyle="bold" />
    
    	<!--提示信息-->
        <TextView
            android:id="@+id/tv_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="@dimen/dp_60"
            android:layout_marginTop="@dimen/dp_36"
            android:layout_marginRight="@dimen/dp_60"
            android:layout_marginBottom="@dimen/dp_50"
            android:gravity="center"
            android:textColor="@color/color_222222"
            android:textSize="@dimen/dp_28" />
    
        <View
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_1"
            android:background="@color/color_E8E8E8" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_92"
            android:orientation="horizontal">
    
            <!--取消按钮-->
            <TextView
                android:id="@+id/tv_cancel"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/tv_cancel"
                android:textColor="@color/color_666666"
                android:textSize="@dimen/dp_28" />
    
            <View
                android:id="@+id/v_line"
                android:layout_width="@dimen/dp_1"
                android:layout_height="match_parent"
                android:background="@color/color_E8E8E8" />
    
            <!--确认按钮-->
            <TextView
                android:id="@+id/tv_ok"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="@string/tv_ok"
                android:textColor="@color/color_00A1C1"
                android:textSize="@dimen/dp_28" />
        </LinearLayout>
    
    </LinearLayout>
    

    new_dialog_bg

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 边框的宽度和颜色 -->
        <stroke
            android:width="@dimen/dp_1"
            android:color="#E8E8E8" />
        <!-- 圆角的半径 -->
        <corners android:radius="@dimen/dp_12" />
        <!-- 填充颜色 -->
        <solid android:color="#FFFFFF" />
    </shape>
    

    2、代码实现

    public class MyDialog extends Dialog implements View.OnClickListener {
        private TextView tv_title;
        private TextView tv_msg;
        private TextView tv_cancel;
        private TextView tv_ok;
        private View v_line;
    
        private OkOnClickListener okOnClickListener;
        private CancelOnClickListener cancelOnClickListener;
    
        public MyDialog(@NonNull Context context) {
            this(context, R.style.BaseDialogStyle);
        }
    
        public MyDialog(@NonNull Context context, int themeResId) {
            super(context, themeResId);
            setContentView(R.layout.dialog_alert);
            initView();
            initAction();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            WindowManager m = getWindow().getWindowManager();
            Display d = m.getDefaultDisplay();
            WindowManager.LayoutParams p = getWindow().getAttributes();
            p.width = d.getWidth(); //设置dialog的宽度为当前手机屏幕的宽度
            getWindow().setAttributes(p);
    
        }
    
        private void initView() {
            tv_title = findViewById(R.id.tv_title);
            tv_msg = findViewById(R.id.tv_msg);
            tv_cancel = findViewById(R.id.tv_cancel);
            tv_ok = findViewById(R.id.tv_ok);
            v_line = findViewById(R.id.v_line);
    
            tv_ok.setOnClickListener(this);
            tv_cancel.setOnClickListener(this);
        }
    
        //默认设置ok和cancel按钮都不可见:这样可以代码动态设置只显示一个按钮或者两个按钮,使控件更加实用
        private void initAction() {
            tv_cancel.setVisibility(View.GONE);
            tv_ok.setVisibility(View.GONE);
            v_line.setVisibility(View.GONE);
        }
    
    	//设置title
        public MyDialog setTitle(String title) {
            if (this.tv_title != null) {
                this.tv_title.setText(StringUtil.isEmpty(title) ? this.getContext().getResources().getString(R.string.title) : title);
            }
            return this;
        }
    
        //设置msg
        public MyDialog setMessage(String message) {
            if (this.tv_msg != null) {
                this.tv_msg.setText(StringUtil.isEmpty(message) ? "" : message);
            }
            return this;
        }
    
        //设置ok按钮点击事件
        public MyDialog setPositiveButton(String okMsg, OkOnClickListener okOnClickListener) {
            if (this.tv_ok != null) {
                this.tv_ok.setVisibility(View.VISIBLE);
                this.tv_ok.setText(StringUtil.isEmpty(okMsg) ? this.getContext().getResources().getString(R.string.tv_ok) : okMsg);
                this.okOnClickListener = okOnClickListener;
            }
            return this;
        }
    
        //设置cancel按钮点击事件
        public MyDialog setNegativeButton(String cancelMsg, CancelOnClickListener cancelOnClickListener) {
            if (this.tv_cancel != null) {
                this.tv_cancel.setVisibility(View.VISIBLE);
                this.v_line.setVisibility(View.VISIBLE);
                this.tv_cancel.setText(StringUtil.isEmpty(cancelMsg) ? this.getContext().getResources().getString(R.string.tv_cancel) : cancelMsg);
                this.cancelOnClickListener = cancelOnClickListener;
            }
            return this;
        }
    
        @Override
        public void onClick(View v) {
            dismiss();
            int id = v.getId();
            if (id == R.id.tv_ok) {
                if (okOnClickListener != null) {
                    okOnClickListener.confirm();
                }
            } else if (id == R.id.tv_cancel) {
                if (cancelOnClickListener != null) {
                    cancelOnClickListener.cancel();
                }
            }
        }
    
        public interface OkOnClickListener {
            void confirm();
        }
    
        public interface CancelOnClickListener {
            void cancel();
        }
    
    }
    

    3、调用dialog
    我们写一个工具类来调用,这样全局只需要调用工具类就ok了,不用每次都new一个dialog对象来调用。

    //工具类
    public class DialogHelper {
    
        /**
         * 单按钮dialog弹出框
         *
         * @param context           上下文
         * @param title             标题
         * @param msg               内容
         * @param cancelOutSide     是否可以点击dialog外部时关闭dialog
         * @param ok                确认按钮
         * @param okOnClickListener 确认回调
         */
        public static void showDialog(Context context, String title, String msg, boolean cancelOutSide,
                                      String ok, MyDialog.OkOnClickListener okOnClickListener) {
    
            showDialog(context, title, msg, true, cancelOutSide, ok, okOnClickListener, "", null);
        }
    
        /**
         * 双按钮dialog弹出框
         *
         * @param context               上下文
         * @param title                 标题
         * @param msg                   内容
         * @param hideCancel            是否隐藏“取消”按钮
         * @param cancelOutSide         是否可以点击dialog外部时关闭dialog
         * @param ok                    确认按钮
         * @param okOnClickListener     确认回调
         * @param cancel                取消按钮
         * @param cancelOnClickListener 取消回调
         */
        public static void showDialog(Context context, String title, String msg, boolean hideCancel, boolean cancelOutSide,
                                      String ok, MyDialog.OkOnClickListener okOnClickListener,
                                      String cancel, MyDialog.CancelOnClickListener cancelOnClickListener) {
            MyDialog dialog = new MyDialog(context);
            dialog.setTitle(title);
            dialog.setMessage(msg);
            dialog.setCanceledOnTouchOutside(cancelOutSide);
            dialog.setCancelable(cancelOutSide);
            dialog.setPositiveButton(ok, okOnClickListener);
            if (!hideCancel) {
                dialog.setNegativeButton(cancel, cancelOnClickListener);
            }
            dialog.show();
        }
    }
    

    4、最后附上自定义dialog的样式

    在这里插入图片描述

    展开全文
  • Android自定义Dialog...通过这个实例你可以了解如何在android编程中自定义dialog,创建dialog对象,加载自定义布局文件,本实例将围绕CustomDialog.Builder来展开编程,创建一个极漂亮类似WEB风格的弹出式提示框
  • private Dialog dialog; private LinearLayout lLayout_bg; private TextView txt_title; private TextView txt_msg; private Button btn_neg; private Button btn_pos; private ImageView img_line; ...
  • 安卓自定义Dialog的实现

    万次阅读 多人点赞 2019-02-16 09:52:11
    安卓自定义Dialog

    #一、Dialog布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:orientation="vertical"
        android:padding="20.0dip" >
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#ff7200"
            android:orientation="vertical" >
    
            <TextView
                android:id="@+id/title"
                android:textColor="#ffffff"
                android:textSize="20sp"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="自定义弹窗"
                android:visibility="visible" />
    
            <LinearLayout
                android:id="@+id/content"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center" >
    
    
                <TextView
                    android:background="#ffffff"
                    android:id="@+id/message"
                    android:textColor="#b8b8b8"
                    android:textSize="16sp"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:gravity="left|center"
                    android:lineSpacingMultiplier="1.5"
                    android:paddingBottom="15.0dip"
                    android:paddingLeft="20.0dip"
                    android:paddingRight="20.0dip"
                    android:paddingTop="15.0dip" />
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_gravity="bottom"
                android:background="#ffffff"
                android:gravity="center"
                android:orientation="horizontal" >
    
                <TextView
                    android:layout_weight="1"
                    android:id="@+id/positiveTextView"
                    android:textColor="#b8b8b8"
                    android:textSize="16sp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:text="ok"
                    android:clickable="true"/>
    
                <TextView
                    android:layout_weight="1"
                    android:id="@+id/negativeTextView"
                    android:textColor="#ff9138"
                    android:textSize="16sp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center"
                    android:text="cancel"
                    android:clickable="true"/>
            </LinearLayout>
        </LinearLayout>
    
    </FrameLayout>
    

    这里写图片描述

    #二、Style

     <style name="Dialog" parent="android:style/Theme.Dialog">
            <item name="android:background">#00000000</item>
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsFloating">true</item>
        </style>
    

    #三、MainActivity代码

     CustomDialog.Builder builder = new CustomDialog.Builder(MainActivity.this);
                    builder.setMessage("这个就是自定义的提示框");
                    builder.setTitle("提示");
                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            //设置你的操作事项
                            Toast.makeText(MainActivity.this,"queding",Toast.LENGTH_SHORT).show();
                        }
                    });
    
                    builder.setNegativeButton("取消",
                            new android.content.DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    Toast.makeText(MainActivity.this,"queding",Toast.LENGTH_SHORT).show();
                                    dialog.dismiss();
                                }
                            });
    
                    builder.create().show();
    

    #四、自定义DialogClass

    package com.cavytech.widget;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    import com.cavytech.wear2.R;
    
    /**
     * Created by LiBin on 2016/6/16.
     */
    public class CustomDialog extends Dialog {
    
        public CustomDialog(Context context) {
            super(context);
        }
    
        public CustomDialog(Context context, int theme) {
            super(context, theme);
        }
    
        public static class Builder {
            private Context context;
            private String title;
            private String message;
            private String positiveButtonText;
            private String negativeButtonText;
            private View contentView;
            private DialogInterface.OnClickListener positiveButtonClickListener;
            private DialogInterface.OnClickListener negativeButtonClickListener;
    
            public Builder(Context context) {
                this.context = context;
            }
    
            public Builder setMessage(String message) {
                this.message = message;
                return this;
            }
    
            /**
             * Set the Dialog message from resource
             *
             * @param
             * @return
             */
            public Builder setMessage(int message) {
                this.message = (String) context.getText(message);
                return this;
            }
    
            /**
             * Set the Dialog title from resource
             *
             * @param title
             * @return
             */
            public Builder setTitle(int title) {
                this.title = (String) context.getText(title);
                return this;
            }
    
            /**
             * Set the Dialog title from String
             *
             * @param title
             * @return
             */
    
            public Builder setTitle(String title) {
                this.title = title;
                return this;
            }
    
            public Builder setContentView(View v) {
                this.contentView = v;
                return this;
            }
    
            /**
             * Set the positive button resource and it's listener
             *
             * @param positiveButtonText
             * @return
             */
            public Builder setPositiveButton(int positiveButtonText,
                                             DialogInterface.OnClickListener listener) {
                this.positiveButtonText = (String) context
                        .getText(positiveButtonText);
                this.positiveButtonClickListener = listener;
                return this;
            }
    
            public Builder setPositiveButton(String positiveButtonText,
                                             DialogInterface.OnClickListener listener) {
                this.positiveButtonText = positiveButtonText;
                this.positiveButtonClickListener = listener;
                return this;
            }
    
            public Builder setNegativeButton(int negativeButtonText,
                                             DialogInterface.OnClickListener listener) {
                this.negativeButtonText = (String) context
                        .getText(negativeButtonText);
                this.negativeButtonClickListener = listener;
                return this;
            }
    
            public Builder setNegativeButton(String negativeButtonText,
                                             DialogInterface.OnClickListener listener) {
                this.negativeButtonText = negativeButtonText;
                this.negativeButtonClickListener = listener;
                return this;
            }
    
            public CustomDialog create() {
                LayoutInflater inflater = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                // instantiate the dialog with the custom Theme
                final CustomDialog dialog = new CustomDialog(context, R.style.Dialog);
                View layout = inflater.inflate(R.layout.dialog_normal_layout, null);
                dialog.addContentView(layout, new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                // set the dialog title
                ((TextView) layout.findViewById(R.id.title)).setText(title);
                // set the confirm button
                if (positiveButtonText != null) {
                    ((TextView) layout.findViewById(R.id.positiveTextView))
                            .setText(positiveButtonText);
                    if (positiveButtonClickListener != null) {
                        ((TextView) layout.findViewById(R.id.positiveTextView))
                                .setOnClickListener(new View.OnClickListener() {
                                    public void onClick(View v) {
                                        positiveButtonClickListener.onClick(dialog,
                                                DialogInterface.BUTTON_POSITIVE);
                                    }
                                });
                    }
                } else {
                    // if no confirm button just set the visibility to GONE
                    layout.findViewById(R.id.positiveTextView).setVisibility(
                            View.GONE);
                }
                // set the cancel button
                if (negativeButtonText != null) {
                    ((TextView) layout.findViewById(R.id.negativeTextView))
                            .setText(negativeButtonText);
                    if (negativeButtonClickListener != null) {
                        ((TextView) layout.findViewById(R.id.negativeTextView))
                                .setOnClickListener(new View.OnClickListener() {
                                    public void onClick(View v) {
                                        negativeButtonClickListener.onClick(dialog,
                                                DialogInterface.BUTTON_NEGATIVE);
                                    }
                                });
                    }
                } else {
                    // if no confirm button just set the visibility to GONE
                    layout.findViewById(R.id.negativeTextView).setVisibility(
                            View.GONE);
                }
                // set the content message
                if (message != null) {
                    ((TextView) layout.findViewById(R.id.message)).setText(message);
                } else if (contentView != null) {
                    // if no message set
                    // add the contentView to the dialog body
                    ((LinearLayout) layout.findViewById(R.id.content))
                            .removeAllViews();
                    ((LinearLayout) layout.findViewById(R.id.content))
                            .addView(contentView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
                }
                dialog.setContentView(layout);
                return dialog;
            }
        }
    }
    

    扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

    公众号回复“资料获取”,获取更多干货哦~

    有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

    展开全文
  • 自定义Dialog弹框提示

    2016-09-23 11:50:44
    弹框效果图: @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_dialog_activity: initReturnBack(); break; case R.id.t
  • Android 自定义dialog

    2018-01-18 12:08:59
    博客链接http://blog.csdn.net/qq_31390699/article/details/79094499 自定义dialog,封装点击事件,设置对话框文案,弹出动画,设置位置等
  • Android 自定义加载框dialog

    千次阅读 2015-12-25 16:03:22
    1、首先准备好图片资源,写一个自定义的drawable(progress_drawable_white),实现动画功能。 xmlns:android="http://schemas.android.com/apk/res/android">
  • Android—自定义Dialog

    2021-05-26 11:26:05
    在 Android 日常的开发中,Dialog 使用是比较广泛的。无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框。而我们去看一下原生的对话框,虽然随着 Android 版本的更新...
  • 各种自定义dialog

    2014-11-12 18:32:02
    这个demo主要的功能室自定义了很多种提示框,可以直接当工具类用,希望能够帮助需要的同学.
  • Flutter Dialog模态使用及自定义Dialog

    千次阅读 2019-10-29 15:04:56
    自定义dialog插件 用来弹出确认取消提示框,或者自定义模态框 自定义类: import 'package:flutter/material.dart'; class dialogUtil { /** * 通用显示确定按钮框 */ static showConfirmDialog...
  • 自定义Dialog

    2015-05-20 15:09:48
    自定义Dialog 提示框 加载提示框 登录框
  • 自定义消息提示框

    2019-10-06 17:31:28
    使用原生JavaScript简单封装的一个消息提示模态,如果谁有更好的方式可以分享,谢谢! <!DOCTYPE html> <title><...
  • 诸如更新提示等含有取消和删除两个按钮的对话框我们可以通过代码创建一个AlertDialog并通过它暴露的一系列方法设置我们自定义的布局和style,但有时候系统的AlertDialog并不能实现更好的定制,这时,我们就想到了...
  • Odoo开发之自定义弹框、提示框Dialog

    千次阅读 2020-11-10 21:00:41
    Odoo开发之自定义弹框、提示框Dialog 文章目录Odoo开发之自定义弹框、提示框Dialog前言一、Odoo官方提示框的三种方法第一种:在xml按钮中,添加confirm属性。第二种:在onchange方法中,return 一个warning对象。...
  • 本文实例讲述了Android编程中自定义dialog用法。分享给大家供大家参考,具体如下: dialog是android中提供的一组弹出提示框,非常好用,可是它的样式是一个定式,有时候我们需求定义一些自己的样式 1、定义一个样式...
  • 安卓dialog的使用+如何自定义dialog

    万次阅读 多人点赞 2018-06-19 22:40:28
    回到正题,看到产品给我的设计图,有辣么多的自定义dialog,发现之前自己只会系统自带的dialog,但是这样根本满足不了产品的需求,所以自己上周好好总结下,然后把产品给的需求完成。//哇哇哇,项目写不完了 什么...
  • 前言:圆角对话框在项目中用的越来越多,之前一篇文章有介绍过使用系统的AlertDialog+CardView(Android中使用CardView实现圆角对话框)实现了圆角对话框的样式,今天介绍自定义Dialog实现通用的圆角对话框。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,424
精华内容 7,769
关键字:

自定义dialog提示框