我有两种方式:

第一的:

 textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize));

xml中的第二个:
android:textSize="@dimen/defaultTextSize"

在values/dimen.xml中,我用20sp声明了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))

关于android - Android文字大小以编程方式太大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28071584/

10-10 18:44