繁体   English   中英

将EditText的文本大小从像素更改为缩放像素

[英]Changing EditText's text size from pixel to scaled pixels

我正在为文本大小提供一个选项,其中一个用于EditText框。 我已经使用EditText#getTextSize()确定了原始文本大小。 结果以像素给出。 一旦用户选择文本大小,我使用edittext.setTextSize(TypedValue.COMPLEX_UNIT_SP, chosen)来应用文本大小。

问题是不同的屏幕尺寸给我带来截然不同的文字大小,例如在ICS手机上, EditText.getTextSize()返回36,这绝对是巨大的,绝对不是整个系统中使用的默认文本大小。

我究竟做错了什么?

由于屏幕密度不同以及从getTextSize()获得的值以像素为单位(px),您可能会看到不同的值。 密度无关像素(dp)和缩放像素(sp)被调整为独立于屏幕密度,它们是您应该使用的。 要从px获取dp或sp,您可以使用这样的简单转换:

public static float pxToDp( float px, Context context ) {
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float dp = px / ( metrics.densityDpi / 160f );
    return dp;
}

或者这(我从这篇文章中得到的 ):

public static float pixelsToSp(Context context, Float px) {
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
    return px/scaledDensity;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM