Android Snackbar文本大小太大

Android Snackbar文本大小太大,android,android-snackbar,Android,Android Snackbar,我正在尝试更改Snackbar文本大小,因为我希望它对于视力低下的用户来说易于阅读。我写这个方法是为了创建Snackbar private Snackbar getSnackbar(int msgId) { final Snackbar snackbar = Snackbar.make( mView, msgId, Snackbar.LENGTH_LONG); final View view = snackb

我正在尝试更改Snackbar文本大小,因为我希望它对于视力低下的用户来说易于阅读。我写这个方法是为了创建Snackbar

private Snackbar getSnackbar(int msgId) {
    final Snackbar snackbar = Snackbar.make(
            mView,
            msgId,
            Snackbar.LENGTH_LONG);
    final View view = snackbar.getView();
    final TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.snackbar_textsize));
    return snackbar;
}
相应的
dimens.xml
是:

<resources>
    <dimen name="header_date_font_size">16sp</dimen>
    <dimen name="snackbar_textsize">16sp</dimen>
</resources>

16便士
16便士
下面是结果Snackbar的屏幕截图

为什么文本这么大?我希望它是通常的16sp大小,因为它在我的应用程序中无处不在。

getDimension()
返回已应用其维度缩放因子的资源的值

因此,如果资源是在
sp
中指定的,那么返回值就是实际大小的像素数

但是您正在将该值输入到
setText()
中,并说测量值在
sp
中,而实际上是以像素为单位的。所以它应用了另一个比例因子

相反,只要说:

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.snackbar_textsize));