安卓 Snackbar 文字大小太大

6
我想改变 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>

这是生成的 Snackbar 的截图。

enter image description here

为什么文本这么大?我期望它的大小是正常的16sp,就像我的应用程序中的其他文本一样。
1个回答

13

getDimension() 返回已应用其尺寸缩放系数的资源值。

因此,如果在资源中指定了 sp,则返回值是实际像素大小的数量。

但是,您将该值馈送到 setText() 中,并说该测量是以 sp 为单位的,而实际上是以像素为单位的。因此,它会应用另一个缩放系数。

相反,只需说:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接