【问题标题】:Why Android use separate xmlns for ContraintLayout为什么 Android 对 ConstraintLayout 使用单独的 xmlns
【发布时间】:2017-03-22 17:02:45
【问题描述】:

我对 Android 中的 ConstraintLayout 有点困惑。我正在学习它,首先我对此感到困惑,为什么 android 为它使用单独的 xml 命名空间? xmlns:app="http://schemas.android.com/apk/res-auto"

ConstraintLayout 是 Layout 的一部分,那么为什么 google 没有将它添加到旧的命名空间中呢? xmlns:android="http://schemas.android.com/apk/res/android"

以及为什么android 需要在XML 中编写完整的限定名? android.support.constraint.ConstraintLayout 为什么不只是 ConstraintLayout?作为相对布局?

【问题讨论】:

    标签: android android-constraintlayout


    【解决方案1】:

    ConstraintLayout 是 Layout 的一部分,那么为什么 google 没有将它添加到旧的命名空间中呢?

    这是为平台定义的属性保留的。 ConstraintLayout 来自图书馆,而不是来自平台。

    以及为什么android 需要在XML 中编写完整的限定名? android.support.constraint.ConstraintLayout 为什么不只是 ConstraintLayout?

    Android 只知道使用简写、bare-class-name-only 表示法在几个平台定义的包中查找视图。 android.support.constraint 来自图书馆,而不是平台。

    【讨论】:

    • 我期待与您相同的答案。但是为什么谷歌没有让它特定于平台呢?我认为这对开发人员来说可能更容易,因为看起来 RelativeLayout 会被它取代。
    • @Nothing:“但是为什么谷歌没有让它特定于平台呢?” -- ConstraintLayout 于去年发布。如果他们将其放入固件中,它将在 Android 7.0+ 中。 Android 7.0+ 目前在极少数设备上使用,而 ConstraintLayout 库可用于支持数亿台设备的应用程序。 RelativeLayout 不会被 ConstraintLayout 取代,因为出于向后兼容性的原因,RelativeLayout 将被无限期支持。
    • 我带着新的困惑回来确认为什么android没有写完整的限定名来解决路径?意思是假设我只写 ConstraintLayout 然后 android 可以在后台添加完全限定的名称。为什么安卓不这样做?只是为了表明它是特定于库而不是特定于平台的?
    • @Nothing:如果有 2 个以上的类名为 ConstraintLayout,会发生什么?冲突将如何解决?一般来说,问“为什么开发者 X 做 Y 事?”在 Stack Overflow 上没用。唯一能明确回答的只有开发者 X,开发者 X 不太可能在这里回答问题。
    • 我知道这可能很难回答,但我想问的是可能有一些东西可以学习以获得更好的设计方法。无论如何谢谢现在明白了。
    猜你喜欢
    • 2019-05-15
    • 2016-01-12
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多