Android - 将dp转换为浮点数

11

我的字体大小是12dp。

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

3个回答

21

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

float twelveDp = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 12, 
                mContext.getResources().getDisplayMetrics() );

applyDimension(int unit,FLOAT value ...)不是DP。该解决方案将float转换为float,而不是DP转换为float。 - Cipo

9

试试这个:

public static float dipToPixels(Context context, float dipValue){
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,  dipValue, metrics);
}

3
您可以尝试以下方法:

// 将 sp 转换为像素

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

我已经在res/values/dimens.xml中定义了text_size

<resources>
    <dimen name="text_size">12sp</dimen>
</resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接