Android 文本大小编程太大
Android text-size programmatically too big
我有两种情况:
第一个:
textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize));
第二个xml:
android:textSize="@dimen/defaultTextSize"
在 values/dimen.xml 中我声明了 defaultTextSize 为 20sp
在我的第一个案例中,文本比在我的第二个案例中大得多(并且在某些屏幕分辨率上有所不同)。为什么?
我做错了吗?
执行setTextSize(float size)
public void setTextSize(float size) {
setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}
在您的情况下,您正在缩放提供给 setTextSize
的值,因为 getDimension
returns 维度乘以指标。试试
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize));
setTextSize()
以像素为单位
使用这个
public float pixelsToSp(float px)
{
float scaledDensity = _context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}
textView.setTextSize(pixelsToSp(getResources().getDimension(R.dimen.defaultTextSize)));
或
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize))
TextView 使用 Resources.getDimensionPixelSize 方法,而不是 Resources.getDimension textSize。
您尝试过使用
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.defaultTextSize));
在dimens.xml
中添加尺寸
<dimen name="text_medium">18sp</dimen>
然后,使用以下设置任意大小
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_medium));
我有两种情况:
第一个:
textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize));
第二个xml:
android:textSize="@dimen/defaultTextSize"
在 values/dimen.xml 中我声明了 defaultTextSize 为 20sp
在我的第一个案例中,文本比在我的第二个案例中大得多(并且在某些屏幕分辨率上有所不同)。为什么? 我做错了吗?
执行setTextSize(float size)
public void setTextSize(float size) {
setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}
在您的情况下,您正在缩放提供给 setTextSize
的值,因为 getDimension
returns 维度乘以指标。试试
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize));
setTextSize()
以像素为单位
使用这个
public float pixelsToSp(float px)
{
float scaledDensity = _context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}
textView.setTextSize(pixelsToSp(getResources().getDimension(R.dimen.defaultTextSize)));
或
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.defaultTextSize))
TextView 使用 Resources.getDimensionPixelSize 方法,而不是 Resources.getDimension textSize。
您尝试过使用
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.defaultTextSize));
在dimens.xml
中添加尺寸 <dimen name="text_medium">18sp</dimen>
然后,使用以下设置任意大小
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_medium));