Blankj / AndroidUtilCode

:fire: Android developers should collect the following utils(updating).
https://blankj.com/2016/07/31/android-utils-code/
Apache License 2.0
33.32k stars 10.69k forks source link

Toastutil为什么要改样式? #397

Closed yuzhiqiang1993 closed 6 years ago

yuzhiqiang1993 commented 6 years ago

建议不要修改ToastUtils默认样式。看着很别扭。

Blankj commented 6 years ago

我哪里改样式了?改不改不都是你们自己设置么

yuzhiqiang1993 commented 6 years ago

private static void show(final CharSequence text, final int duration) { HANDLER.post(new Runnable() { @Override public void run() { cancel(); sToast = Toast.makeText(Utils.getApp(), text, duration); // solve the font of toast // TextView tvMessage = sToast.getView().findViewById(android.R.id.message); // TextViewCompat.setTextAppearance(tvMessage, android.R.style.TextAppearance); // tvMessage.setTextColor(msgColor); sToast.setGravity(gravity, xOffset, yOffset); // setBg(tvMessage); sToast.show(); } }); }

show方法注释的这个地方好像是改了

Blankj commented 6 years ago
if (msgColor != COLOR_DEFAULT) {
    tvMessage.setTextColor(msgColor);
}

不知道啥时候去除了这个判断 加上了已经 下版本会更新

yuzhiqiang1993 commented 6 years ago

好的 麻烦了

Blankj commented 6 years ago

默认是颜色是 fffffff,我的默认是feffffff,差了一个透明度,你的机器是自己修改过的 rom? 把默认颜色改了吗?上传个图让我看看默认的和 ToastUtils 的区别,代码我已经修改了,我只是想确认下。

yuzhiqiang1993 commented 6 years ago

qq 20180129105823 qq 20180129105817

yuzhiqiang1993 commented 6 years ago

应该不是rom的问题,两个机器都是这样,把那几句代码注释掉就好了

Blankj commented 6 years ago

你可以试试 1.12.2 版本,已经有了

yuzhiqiang1993 commented 6 years ago

好的

Blankj commented 6 years ago

你应用的主题是啥?

yuzhiqiang1993 commented 6 years ago

刚试了下好像还是不行, 我是直接运行你的demo也是这样,我自己的主题是 Theme.AppCompat.Light.NoActionBar

Blankj commented 6 years ago

你 rom 肯定是定制过的,把原生 toast 的 textview 的 TextAppearance 修改过

yuzhiqiang1993 commented 6 years ago

但是我直接用原生的Toast.makeText(activity,"sadsad",Toast.LENGTH_LONG).show(); 是正常的,而且我把下面这几句代码注释掉也是正常的 qq 20180129111324

Blankj commented 6 years ago

我知道问题是出在 TextViewCompat.setTextAppearance(tvMessage, android.R.style.TextAppearance); 这个上,就是因为我设置了这个的原因,你 rom 改了 toast 样式

yuzhiqiang1993 commented 6 years ago

好吧 那就先这样吧 问题不大

yuzhiqiang1993 commented 6 years ago

不知道别人有没有这个情况 我是在华为和努比亚的手机上遇见的

Blankj commented 6 years ago

你把我那句换成这个 tvMessage.setTypeface(null); 试试

yuzhiqiang1993 commented 6 years ago

还是不行

yuzhiqiang1993 commented 6 years ago

反正是只要把这句注释掉就没问题 TextViewCompat.setTextAppearance(tvMessage, android.R.style.TextAppearance);

Blankj commented 6 years ago

你 ui 不给你统一 toast 的吗,你自己设置背景和字体颜色去适配,干嘛一定要用系统的呢。

Blankj commented 6 years ago

尽管你手上的机器是黑色字体,但在其他很多机器就是白色的了,这就会造成不统一吧,所以还是自己设置下统一不就好了么

yuzhiqiang1993 commented 6 years ago

没 toast直接就是原生的 先这样吧 问题不大

Blankj commented 6 years ago

你用的手机 rom 都是定制过的,不是谷歌原生的,所以厂家可能会修改样式,明白了吗

yuzhiqiang1993 commented 6 years ago

恩 知道 国内绝大多数rom都是定制的

Blankj commented 6 years ago

你试试这段代码

int msgColor = tvMessage.getCurrentTextColor();
TextViewCompat.setTextAppearance(tvMessage, android.R.style.TextAppearance);
if (sMsgColor != COLOR_DEFAULT) {
    tvMessage.setTextColor(sMsgColor);
} else {
    tvMessage.setTextColor(msgColor);
}
yuzhiqiang1993 commented 6 years ago

可以了

Blankj commented 6 years ago

还是 1.12.2 版本,你更新下,我覆盖了。

yuzhiqiang1993 commented 6 years ago

代码好像没有覆盖掉

Blankj commented 6 years ago

那用 1.12.3 吧

yuzhiqiang1993 commented 6 years ago

1.12.3版本可以了