/XStyleDialog

可定制化样式的Android Dialog

Primary LanguageKotlin

X style Dialog - 万能样式Dialog

API jitpack

下载demo.apk

XStyleDialog中内置多种常见样式的Dialog。

以AlertDialog为例,可以自定义整体大小比例背景TitleMessageLeft/Right Button字体颜色大小是否加粗上下左右间距,以及分割线颜色粗细

支持链式调用。需要那个设置那个,自动管理按钮的显示隐藏。以最简单的方式,实现Dialog的快速使用。

同时提供具体View的获取方法,可以满足任意需求的改造。而不失优雅。

快速使用

Step 1. Add it in your root build.gradle at the end of repositories:

allprojects {
	repositories {
		maven { url 'https://jitpack.io' }
	}
}

Step 2. Add the dependency

dependencies {
	// for Support
	implementation 'com.github.shaoshuai904:XStyleDialog:1.5.1'
	// for androidx
	implementation 'com.github.shaoshuai904:XStyleDialog:2.1.0'
}

show_01

show_02

show_05

show_03

show_04

  • 基础风格确定

通过重写AlertDialog的Config类,实现对Dialog样式的基础定义。以满足自己app的风格。

示例用法 -(自定义风格Config类 传送门)

  • 基础之外的特例

在具体使用时,可以单独设置 特定样式,以满足 基础样式 之外的特定需求。

    // 方法1. 重写Config类中的属性
    val config = AlertDialog.Config(mContext).apply {
        rightBtnColor = Color.RED
        messagePaddingBottom = 40f.dp2px(mContext)
    }
    AlertDialog(mContext, config)
        .setXXX ...
        .setMessage("消息内容", spSize = 14f) // 方法2. 在setXXX方法中设置。(有效级最高,会覆盖Config中的配置)
        .show()

AlertDialog

样式布局: [ 标题 + 消息文本 + 左按钮 + 右按钮 ]  消息文本兼容html样式
        new AlertDialog(mContext)
                .setCancelable(false)
                .setTitle("退出当前账号")
                .setMessage("再连续登陆15天,就可变身为QQ达人。退出QQ可能会使你现有记录归零,确定退出?")
                .setLeftButton("取消") //.setLeftButton("取消", null)
                .setRightButton("确认退出", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        showToast("exit");
                    }
                })
                .show();

ActionSheetDialog

样式布局:[ 标题 + 页签条目 + 取消按钮 ]
        ActionSheetDialog(this).apply {
                setTitle("请选择操作")
                setCancelable(false)
                setCanceledOnTouchOutside(false)
                addSheetItem("条目一", Color.parseColor(DEF_RED))
                addSheetItem("条目二")
                addSheetItem("条目三", Color.BLUE)
                // ……
                addSheetItem(SheetItem("条目九"))
                addSheetItem(SheetItem("条目十", Color.CYAN))
                itemClickListener = OnSheetItemClickListener { item, position ->
                    showToast("clear msg list")
                }
                setCancelText("取 消")
            }.show()

完整预览各类用法 -(简单使用类 传送门)


v2.0.5

  • 更新minSdkVersion = 19

  • 提供setScaleWidthsetScaleHeight方法设置Dialog的屏幕百分比宽度和高度

  • 提供Dialog的getRootView及各个子View方法,以支持深度自定义。

  • 提供Dialog的Config配置文件,以支持不同app默认样式。

  • 新增AlertDialog和AlertEditDialog的Cancelable自适应宽度设置。

  • 对各个Dialog的TitleMessageCancel/OK Button新增了字体大小字体颜色是否加粗等设置。

  • 开放了ActionSheetDialog中 SheetItem 字体颜色和 Cancel Button 显示文本的自定义设置。

  • AlertDialog [ 标题 + 消息文本 + 左按钮 + 右按钮 ] 兼容html样式

  • AlertEditDialog

  • AlertNumberPickerDialog

  • ActionSheetDialog

  • ActionSheetListDialog,支持复杂item布局,同时支持item选中样式

  • ActionSheetRecyclerDialog,支持自定义item Bean,自定义最大、最小高度,自定义分割线,自定义样式选择