代码之家  ›  专栏  ›  技术社区  ›  M.kazem Akhgary

对低级API的样式和主题支持

  •  1
  • M.kazem Akhgary  · 技术社区  · 6 年前

    以下

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="fontFamily">@font/myfont</item>
    </style>
    

    工作正常,但以下

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <item name="android:fontFamily">@font/myfont</item>
    </style>
    

    需要API级别16。

    现在我很困惑,难道我只是通过删除 android: prefix或者它在android4.0上可以正常工作吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ben P.    6 年前

    首先,让我们考虑属性如何在布局中工作。如果您使用支持库来处理字体族,您可以编写如下内容:

    <TextView
        app:fontFamily="@font/myfont"
        .../>
    

    <TextView
        android:fontFamily="@font/myfont"
        .../>
    

    在创建样式时,任何使用 app: 布局中的名称空间根本没有任何名称空间。所以一种风格

    <item name="fontFamily">
    

    <item name="android:fontFamily">
    

    将对应于上面的第二个例子。

    无论你选择使用哪一种,都应该遵循这一原则。如果您使用的是支持库,那么删除名称空间是一件好事。如果您不使用支持库,那么删除名称空间是一件坏事。

    热释光;博士