【问题标题】:Changing EditText's text size from pixel to scaled pixels将 EditText 的文本大小从像素更改为缩放像素
【发布时间】:2023-03-16 21:23:01
【问题描述】:

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

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

我做错了什么?

【问题讨论】:

    标签: android android-edittext text-size


    【解决方案1】:

    由于屏幕密度不同以及从 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;
    }
    

    或者这个(我取自this post):

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多