出于好奇,为什么ConstraintLayout和LinearLayout声明不一致?

时间:2019-04-07 15:49:21

标签: android android-linearlayout android-constraintlayout

在Android文档中,您需要编写android.support.constraint.ConstraintLayout来声明ConstraintLayout。要声明LinearLayout,您只需要LinearLayout。为什么不一致?

例如:(直接来自Android文档)

ConstraintLayout

<android.support.constraint.ConstraintLayout ...>
             <Button android:id="@+id/button" ...
                 app:layout_constraintLeft_toLeftOf="parent"
                 app:layout_constraintRight_toRightOf="parent/>
         </>

LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="16dp"
   android:paddingRight="16dp"
   android:orientation="horizontal"
   android:gravity="center">

   <!-- Include other widget or layout tags here. These are considered
           "child views" or "children" of the linear layout -->

 </LinearLayout>

为什么您不能只写That's Just the Way it Is以外的<ConstraintLayout ...

1 个答案:

答案 0 :(得分:5)

  

为什么不一致?

LinearLayoutandroid.widget中的框架类。框架LayoutInflater知道要在诸如android.widget之类的某些程序包中寻找诸如LinearLayout之类的裸类名称。

ConstraintLayout来自图书馆。框架LayoutInflater对这个库一无所知,并且在ConstraintLayout或其他框架包中找不到android.widget

对于库贡献的类,我们需要完全限定XML元素中的类名称。