【问题标题】:More about font sizes in relation to Android's TextView更多关于与 Android 的 TextView 相关的字体大小
【发布时间】:2015-07-04 21:07:49
【问题描述】:

我想了解字体大小,尤其是与 Android 的密度无关像素有关的信息。 10 号字体与 11 号字体有什么不同?

我问这个问题是因为我有一个问题,如下所述。

我在我的 Android 应用程序中定义了这个自定义 TextView 以支持我的语言和英语。 TextView 会根据应用程序的语言设置更改字体。

public class MyanmarTextView extends TextView {

    public MyanmarTextView(Context context) {
        super(context);
        String fontName = "fonts/OpenSans.ttf";
        String language = context
                .getSharedPreferences("org.bitbucket.infovillafoundation.denko", Context.MODE_PRIVATE)
                .getString("org.bitbucket.infovillafoundation.denko.language", "en");
        if (language.equals("my"))
            fontName = "fonts/WINNWAB.ttf";
        Typeface face = Typeface.createFromAsset(context.getAssets(), fontName);
        this.setTypeface(face);
    }

    public MyanmarTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        String fontName = "fonts/OpenSans.ttf";
        String language = context
                .getSharedPreferences("org.bitbucket.infovillafoundation.denko", Context.MODE_PRIVATE)
                .getString("org.bitbucket.infovillafoundation.denko.language", "en");
        if (language.equals("my"))
            fontName = "fonts/WINNWAB.ttf";
        Typeface face = Typeface.createFromAsset(context.getAssets(), fontName);
        this.setTypeface(face);
    }

    public MyanmarTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        String fontName = "fonts/OpenSans.ttf";
        String language = context
                .getSharedPreferences("org.bitbucket.infovillafoundation.denko", Context.MODE_PRIVATE)
                .getString("org.bitbucket.infovillafoundation.denko.language", "en");
        if (language.equals("my"))
            fontName = "fonts/WINNWAB.ttf";
        Typeface face = Typeface.createFromAsset(context.getAssets(), fontName);
        this.setTypeface(face);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }

}

问题是本地语言的字体大小需要大于英文的字体大小。例如,要创建将英文文本设置为字体大小 10 的外观,本地语言文本的字体大小应为 13。如果我希望字体大小由TextView 自动设置,是否添加给定字体大小的常数值还是将其乘以常数?还是完全不同?

【问题讨论】:

    标签: android font-size


    【解决方案1】:

    我认为这取决于您的自定义字体WINWAB.ttf,它可能小于OpenSans.ttf。它实际上与android大小无关,10sp11sp不同只是后者更大。

    我建议测试尺寸并尝试在 OpenSans.ttfWINWAB.ttf 呈现的尺寸之间找到某种关系。添加+3 可能值得考虑,而且您很幸运已经拥有自定义视图,因此很容易实现。

    【讨论】:

      【解决方案2】:

      我不知道我是否正确,但试试这个 ->

      this.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
      

      或者你想要的任何东西,而不是 14

      【讨论】:

        猜你喜欢
        • 2011-01-05
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多