【问题标题】:Android default typeface will change according to deviceAndroid默认字体会根据设备而变化
【发布时间】:2014-09-24 16:18:27
【问题描述】:

我正在为 android 开发自定义视图,在我的自定义视图中我想使用一些第三方字体。但是现在我很困惑,如果我默认设置自定义字体,设备默认字体(如果不同的 android 版本不同)可能会被覆盖?或者您能否告诉我您对使用默认字体的看法或优势。

【问题讨论】:

    标签: android


    【解决方案1】:

    关于将使用哪种字体来呈现您的文本存在相当多的不可预测性。在 Ice Cream Sandwich 及更高版本上,默认文本应使用 Roboto 呈现。大多数比这更早的设备将使用 Droid Sans 呈现相同的文本。不幸的是,有很多例外。 SamsungLG 喜欢允许用户更改默认字体,这会传递到您的应用程序中。许多Amazon Fire devices apply different default typefaces 到您的应用程序的不同 元素。还有一个事实是Android L will introduce a new version of Roboto,尽管这种变化可能不会影响外观足以引起关注。

    用户选择呢?为什么这很重要?好吧,问题是不一致的字体影响你的布局。如果您将 TextViews 和 Buttons 之类的内容设置为根据其内容调整大小,那么它们的大小将根据当时使用的字体而改变。根据您的布局,这将导致其他元素移动甚至部分覆盖。如果您将上述 UI 小部件设置为固定大小,则可能存在文本被截断或包裹的风险,这也很丑陋。

    很遗憾,默认情况下无法设置自定义字体。如果你想使用自定义字体,有几个策略可以遵循。第一步是将字体与您的应用程序捆绑在一起。 Roboto 是一个不错的选择,因为它是用户习惯查看的内容。 You can use some utility class to apply your custom font to widgets that contain textYou could also subclass the same widgets and apply the font in the constructor.

    还记得我说过没有办法设置自定义默认字体吗?好吧,有点,但是it involves reflection。这不是官方 API,它可能会在未来任何点中断(处理这些异常!)。这实际上是我个人最喜欢的解决方案,因为所有其他解决方案都非常混乱。

    【讨论】:

      猜你喜欢
      • 2016-02-27
      • 2013-08-20
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2013-01-13
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多