老套路先看效果图:

再来看下代码:

package com.tm.live.ui.dialog;import android.app.Activity;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import com.tm.live.R;
import com.tm.live.utils.AndroidUtils;/*** @author xiayiye5*/
public class SharedDialog implements View.OnClickListener {private AlertDialog alertDialog;private SharedDialog() {}private static SharedDialog sharedDialog = new SharedDialog();public static SharedDialog getDialog() {return sharedDialog;}/*** 标题可不传,就用默认的** @param activity 要显示的窗体* @param msg      弹出的消息* @param btnColor 分享按钮的背景色* @param imgId    按钮左边的图片*/public void showSharedWeChat(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {showSharedDialog(activity, null, msg, "继续分享到微信", btnColor, imgId);}public void showSharedChat(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {showSharedDialog(activity, null, msg, "继续分享到QQ", btnColor, imgId);}public void showSharedWeiBo(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {showSharedDialog(activity, null, msg, "继续分享到微博", btnColor, imgId);}/*** @param activity 要显示的窗体* @param msg      弹出的消息* @param btnColor 分享按钮的背景色* @param imgId    按钮左边的图片*/public void showSharedDialog(Activity activity, String title, String msg, String btnText, @ColorRes int btnColor, @DrawableRes int imgId) {AlertDialog.Builder dialog = new AlertDialog.Builder(activity);View dialogView = View.inflate(activity, R.layout.shared_dialog_view, null);ImageView ivCloseRight = dialogView.findViewById(R.id.iv_close_right);ImageView ivLeftSharedImg = dialogView.findViewById(R.id.iv_left_shared_img);TextView tvSharedButton = dialogView.findViewById(R.id.tv_shared_button);tvSharedButton.setText(btnText);LinearLayout llSharedLayout = dialogView.findViewById(R.id.ll_shared_layout);ivLeftSharedImg.setImageDrawable(activity.getDrawable(imgId));llSharedLayout.setBackgroundColor(activity.getColor(btnColor));ivCloseRight.setOnClickListener(this);llSharedLayout.setOnClickListener(this);dialog.setView(dialogView);alertDialog = dialog.create();TextView tvShareMessage = dialogView.findViewById(R.id.tv_share_message);tvShareMessage.setText(msg);TextView tvShareTittle = dialogView.findViewById(R.id.tv_share_tittle);if (!TextUtils.isEmpty(title)) {tvShareTittle.setText(title);}alertDialog.setCancelable(false);alertDialog.show();int dialogWidth = AndroidUtils.getInstance().getScreenWidth(activity);int dialogHeight = (int) (AndroidUtils.getInstance().getScreenHeight(activity) * 0.3);//设置dialog窗体的大小,一定要是AlertDialogalertDialog.getWindow().setLayout(dialogWidth, dialogHeight);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.iv_close_right://关闭dialogalertDialog.dismiss();break;case R.id.ll_shared_layout://跳转到分享页面jumpSharedPage.goShared();break;default:break;}}public interface JumpSharedPage {/*** 点击分享后的方法*/void goShared();}private JumpSharedPage jumpSharedPage;public void setJumpSharedPage(JumpSharedPage jumpSharedPage) {this.jumpSharedPage = jumpSharedPage;}
}

注意: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="match_parent"android:background="@color/white"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="@dimen/dp_5"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_gravity="right"android:layout_margin="@dimen/dp_5"android:padding="@dimen/dp_8"android:src="@drawable/close"android:tint="@color/black"android:visibility="invisible" /><TextViewandroid:id="@+id/tv_share_tittle"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="@dimen/dp_5"android:layout_weight="1"android:gravity="center"android:text="@string/save_picter"android:textColor="@color/black"android:textSize="18sp"android:textStyle="bold" /><ImageViewandroid:id="@+id/iv_close_right"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_gravity="right"android:layout_margin="@dimen/dp_5"android:padding="@dimen/dp_8"android:src="@drawable/close"android:tint="@color/black" /></LinearLayout><TextViewandroid:id="@+id/tv_share_message"android:layout_width="match_parent"android:layout_height="0dp"android:layout_centerInParent="true"android:layout_marginBottom="@dimen/dp_30"android:layout_weight="1"android:gravity="center"android:paddingLeft="@dimen/dp_20"android:paddingRight="@dimen/dp_20"android:textColor="@color/black"android:textSize="16sp" /><LinearLayoutandroid:id="@+id/ll_shared_layout"android:layout_width="match_parent"android:layout_height="38dp"android:layout_alignParentBottom="true"android:layout_centerInParent="true"android:layout_marginLeft="@dimen/dp_20"android:layout_marginRight="@dimen/dp_20"android:layout_marginBottom="2dp"android:background="@android:color/holo_green_light"android:gravity="center"><ImageViewandroid:id="@+id/iv_left_shared_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="@dimen/dp_5"android:background="@drawable/close"android:tint="@color/white" /><TextViewandroid:id="@+id/tv_shared_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="继续分享到微信"android:textColor="@color/white"android:textSize="18sp" /></LinearLayout>
</LinearLayout>

dialog的显示以及响应事件的方法也很简单:

//Kotlin版本
SharedDialog.getDialog().showSharedDialog(this,
"已保存到相册",
"由于微信分享限制,请到微信上传视频来分享",
"继续分享到微信",
R.color.blue_text,
R.drawable.switch_img)SharedDialog.getDialog().setJumpSharedPage { ToastUtil.show("点击了按钮")}

Android开发之自定义AlertDialog的大小相关推荐

  1. android 自定义dialog 定时关闭,Android编程实现自定义Dialog的大小自动控制方法示例...

    本文实例讲述了Android编程实现自定义Dialog的大小自动控制方法.分享给大家供大家参考,具体如下: Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些 ...

  2. 【Android开发】自定义圆角button样式

    [Android开发]自定义圆角button样式 结果图 步骤 在res/drawable中新建一个drawable文件,自定义命名为btu.xml; 在btu.xml中设置圆角大小和填充颜色,代码如 ...

  3. android自定义横竖双向滚动,Android开发实现自定义水平滚动的容器示例

    Android开发实现自定义水平滚动的容器示例 发布时间:2020-09-12 01:25:56 来源:脚本之家 阅读:71 作者:CharlinGod 本文实例讲述了Android开发实现自定义水平 ...

  4. android实现新闻内容显示功能,Android开发实现自定义新闻加载页面功能实例

    本文实例讲述了Android开发实现自定义新闻加载页面功能.分享给大家供大家参考,具体如下: 一.概述: 1.效果演示: 2.说明:在新闻页面刚加载的时候,一般会出现五种状态 未知状态(STATE_U ...

  5. 《Android开发卷——自定义日期选择器(三)》

                 继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...

  6. 《Android开发卷——自定义日期选择器(二)》

    (小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...

  7. 【Android开发】自定义ListView,使用通用适配器,并实现ListView上的每一项和每一项上的按钮等控件同时监听

    ListView在Android开发中是比较常用的系统组件,但是有时候我们除了需要做ListView上每一行的点击监听事件之外,如果每一行上还有其他需要监听的控件例如Button.CheckBox等, ...

  8. Android开发,自定义View的学习合集

    转载自:http://blog.csdn.net/u011507982/article/details/51199644 自定义控件学习  https://github.com/GcsSloop/An ...

  9. Android开发之自定义的ProgressDialog

    package com.example.dialog;import android.app.ProgressDialog; import android.content.Context; /*** 自 ...

最新文章

  1. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
  2. title: bat批处理简介:Windows自动化之道
  3. Linux 内核阅读工具vim+ctags+cscope+taglist
  4. spring boot2.3.1版本导入spring-boot-starter-web没有validation校验框架的解决办法
  5. 杭电多校 Harvest of Apples 莫队
  6. SCSF 系列:Smart Client Software Factory 与 ObjectBuilder
  7. 西瓜书《机器学习》线性模型 对数几率(逻辑)回归公式推导
  8. 反射类的构造函数和方法
  9. 笔记本电脑键盘切换_2019年最好的2500元以内的笔记本电脑
  10. C++中vector的访问和赋值
  11. Office 2007中的config.xml个性定制说明
  12. 乐在其中设计模式(C#) - 状态模式(State Pattern)
  13. 一种简单的JS加密解密方法
  14. 如何快速学python
  15. Lunar Pro for Mac v5.2.2 – 实用的外接显示器屏幕亮度调节工具
  16. matlab for 数组,Matlab数组
  17. 【C语言】数组排序法(升序)
  18. hihocoder 1224 赛车
  19. 由浅入深讲二叉树4种遍历算法的由来
  20. python123 第四次作业答案_Python第四次作业——黄亦杨

热门文章

  1. 虚拟服务器容器,docker容器和虚拟机的区别
  2. linux mysql odbc驱动安装_mysql odb驱动_Mysql的odbc driver安装配置(Linux)
  3. nacos 公共_SpringCloud配合注册中心Nacos的使用
  4. 升级php影响zabbix吗,zabbix2.0升级到zabbix3.0
  5. python如何定义类_python类定义的讲解
  6. git命令之git mergetool vi非正常退出.swp删除不了的问题
  7. Linux下载_Linux系统各种版本ISO镜像下载(redhat,centos,oracle,ubuntu,openSUSE)
  8. 《简明 Python 教程》笔记
  9. 《Python编程:从入门到实践 》[Eric Matthes著] 中文pdf非扫描版
  10. SSAS(分析服务)优化手册