Android Snackbar 文本大小太大
Android Snackbar textsize too big
我正在尝试更改 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 的屏幕截图。
为什么文字这么大?我原以为它会是通常的 16sp 大小,因为它在我的应用程序中无处不在。
getDimension()
returns 已应用维度比例因子的资源的值。
所以如果在sp
中指定了资源,那么return值就是实际大小的像素数。
但是您将该值输入 setText()
并说测量单位为 sp
,而实际上它以像素为单位。所以它应用了 另一个 比例因子。
相反,只需说:
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.snackbar_textsize));
我正在尝试更改 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 的屏幕截图。
为什么文字这么大?我原以为它会是通常的 16sp 大小,因为它在我的应用程序中无处不在。
getDimension()
returns 已应用维度比例因子的资源的值。
所以如果在sp
中指定了资源,那么return值就是实际大小的像素数。
但是您将该值输入 setText()
并说测量单位为 sp
,而实际上它以像素为单位。所以它应用了 另一个 比例因子。
相反,只需说:
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.snackbar_textsize));