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 = 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 大小,因为它在我的应用程序中无处不在。

最佳答案

getDimension() 返回已应用维度比例因子的资源的值。

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

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

相反,只需说:

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

关于Android Snackbar 文本大小太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35446843/

相关文章:

android - 多个 snackbar

Android 谷歌地图 API v2 路线就像谷歌地图应用程序

android - TopAppBar 无法在 Compose 中自动调整高度,TabRow 无法正常工作

android - 将对象上传到 fireBase,并在 android 上附加图像

android - 将 snackbar 放在 Utility 类中

android - 如何正确实现 Snackbar、Coordinator Layout 和 bottom|right FAB?

android - 如何在正确的 View 中从 fragment 中显示 Snackbar?

android - AutoValue 在 Android 项目中找不到生成的构造函数

android - 复制到剪贴板选项 onShort Click

android - 带有 CoordinatorLayout 的 Snackbar 禁用关闭