Android默认字体将根据设备更改

时间:2014-09-24 16:18:28

标签: android

我正在为android开发自定义视图,在我的自定义视图中我想使用一些第三方字体。但现在我感到困惑的是,如果我默认设置自定义字体,设备默认字体(如果从Android版本到版本不同)可能会被覆盖?或者你能否告诉我你使用默认字体的意见或好处。

1 个答案:

答案 0 :(得分:2)

关于使用哪种字体来渲染文字,存在相当多的不可预测性。在冰淇淋三明治及以上,默认文本应使用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,它可能会在未来任何点处中断(处理这些异常!)。这实际上是我个人最喜欢的解决方案,因为所有其他解决方案都非常混乱。