getActivity / Toaster

Android 吐司框架,专治 Toast 各种疑难杂症
Apache License 2.0
3.25k stars 406 forks source link

[建议]:支持深色模式和自定义边距、圆角大小 #116

Closed fly263 closed 1 year ago

fly263 commented 1 year ago

你觉得框架有什么不足之处?【必答】

1、建议增加一个是否支持深色模式的选项,在深色模式下显示灰色背景 2、建议可以配置Toast的边距和圆角大小,现在只能重写getBackgroundDrawable、getHorizontalPadding、getVerticalPadding这三个方法

issue 是否有人曾提过类似的建议?【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

你觉得该怎么去完善会比较好?【非必答】

No response

getActivity commented 1 year ago

建议增加一个是否支持深色模式的选项,在深色模式下显示灰色背景

这个只能你自己判断了,如果深色模式,初始化的时候设置白色的背景,如果不是则设置黑色的背景,框架目前没有引入 Support 库,没有办法做这个判断,就算做也不值得为了这么个小点引入 Support 库,还用换肤的框架不止 Support 库一套方案,框架没有办法把全部场景兼容到位。

建议可以配置Toast的边距和圆角大小,现在只能重写getBackgroundDrawable、getHorizontalPadding、getVerticalPadding这三个方法

小伙子,Toast 边距可以重写 getXOffset 和 getYOffset 方法来解决,而圆角大小属于 View 背景,框架不会干涉,你要是看着圆角大小不顺眼,可以自己重写 getBackgroundDrawable 返回新的 Drawable 对象,框架目前暂时不会考虑开放设置圆角大小的 API 出去,因为这样会让别人误以为这个是设置 Toast 的背景,但是实际这个是设置 View 的背景。

fly263 commented 1 year ago

感谢回复!

1、换肤和深色模式还是有区别的,深色模式是系统提供的功能,我查了一下资料,Application中监听深色模式变化貌似实现不了,只能在Activity中监听。虽然App也能实现监听,如果能提供一个切换开关更方便。下面这样就可以判断是否为深色模式

         // 获取当前的uiMode
        int uiMode = getResources().getConfiguration().uiMode;
        // 判断当前的uiMode是否为黑暗模式
        if ((uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES) {
            Toaster.setStyle(new WhiteToastStyle());
        } else {
            Toaster.setStyle(new BlackToastStyle());
        }

2、其实我想修改的是内边距,所以重写了getHorizontalPadding()、getVerticalPadding(),框架的内边距感觉有点大