【问题标题】:What's happened to Monospace in Android Lollipop?Android Lollipop 中的 Monospace 发生了什么?
【发布时间】:2015-05-18 13:17:43
【问题描述】:

我有一种风格可以在我的 Android 应用中使用“等宽”:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Base application theme. -->
    <style name="AppTheme"  parent="Theme.AppCompat.Light.DarkActionBar" >
        <!-- Customize your theme here. -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:typeface">monospace</item>
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="android:itemTextAppearance">@style/MenuText</item>
   </style>

   <style name="M13Text">
        <item name="android:typeface">monospace</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textColorLink">@android:color/holo_red_light</item>
   </style>

   <style name="MenuText">
       <item name="android:typeface">monospace</item>
       <item name="android:textColor">@android:color/black</item>
   </style>
</resources>

一切都很好,直到 Lollipop 出现,它似乎不再使用 Monospace 字体,当我在 Android Studio 中将 API 从 19 翻转到 21 时,我可以看到它发生了变化。

我用谷歌搜索并没有找到任何东西,我很欣赏这只是一个外观问题,但有人知道为什么吗?

【问题讨论】:

  • 我在 Android 5.0 上使用 monospace 没有问题。 This sample app 在 Nexus 4 上运行良好——我刚刚对其进行了测试。
  • 感谢@CommonsWare。好奇的。我显然做错了什么,因为直接设置字体也不起作用......我想知道它是否是父属性覆盖了某些东西?
  • 你试过设置android:fontFamily="@null"吗?
  • 谢谢@alanv。这看起来很有希望。

标签: android android-5.0-lollipop monospace


【解决方案1】:

Material 文本外观指定android:fontFamily 属性而不是android:typeface,以便它们可以使用sans-serif-lightsans-serif-medium 等。此属性优先于字体,因此您需要覆盖或清除fontFamily 值。

<style name="MenuText">
    <item name="android:fontFamily">monospace</item>
    ...
</style>

【讨论】:

  • 谢谢@alanv!这给了我解决方案&lt;item name="android:fontFamily"&gt;monospace&lt;/item&gt; &lt;item name="android:typeface"&gt;monospace&lt;/item&gt; 成功了。
  • 确实 android:fontFamily 应该设置为“monospace”而不是@null。对于等宽空间的一次性设置,您还可以将 android:fontFamily="monospace" 作为属性添加到布局 xml 中的 中,而不是为其定义样式。并不是说定义样式是一件坏事,我只是想添加一些信息。感谢您的回答和评论!
  • 我如何随后在 textview 上设置此样式?
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多