10

我的字体大小是 12dp。

我正在使用 设置字体TextPaint,因为我使用的是跨度。问题是TextPaint接受的参数是浮点数。我想知道如何将 12 dp 转换为浮点数?

4

3 回答 3

20

android.content.res.Resources.getDimension(int id):

float twelveDp = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 12, 
                mContext.getResources().getDisplayMetrics() );
于 2016-11-18T01:58:06.520 回答
9

尝试这个:

public static float dipToPixels(Context context, float dipValue){
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,  dipValue, metrics);
}
于 2017-01-17T05:22:05.490 回答
3

You can try following:

// Convert the sp to pixels

final float scale = getResources().getDisplayMetrics().scaledDensity;
int mTextSizeP = (int)  getResources().getDimensionPixelSize(R.dimen.text_size) / scale );

I have already have text_size defined in res/values/dimens.xml :

<resources>
    <dimen name="text_size">12sp</dimen>
</resources>
于 2016-10-25T11:50:58.200 回答