在 CardView 的父级时设计 CardView 是 ConstraintLayout?
Designing CardView while it's Parent is ConstraintLayout?
我在编辑包含 Relativelayout 的 Cardview 中的 RelativeLayout 时搞砸了! ConstraintLayout 会将相对布局的 wrap_content 更改为 0 并添加 tools:layout_editor_absoluteX="10dp" 相对布局内的所有文本视图将折叠卡片视图的右上角!!! (嵌套 CardView 中的元素与 CardView 外部的元素对齐)
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="357dp"
android:layout_height="114dp"
android:layout_margin="5dp"
app:cardCornerRadius="2dp"
app:contentPadding="10dp"
app:cardElevation="10dp"
tools:layout_editor_absoluteY="36dp"
app:cardBackgroundColor="@android:color/white"
tools:layout_editor_absoluteX="11dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="10dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
tools:text="Location"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
<ImageView
android:src="@drawable/ic_hotel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView3"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3"
tools:text="Bangalore"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="10dp"
android:layout_alignBottom="@+id/imageView3"
android:layout_toRightOf="@+id/textView2"
android:layout_toEndOf="@+id/textView2" />
</android.support.v7.widget.CardView>
任何关于使用 ConstraintLayout 设计 RelativeLayout 的指南都会非常完整,使用 ConstraintLayout 时不能在任何地方使用 RelativeLayout?在使用 RelativeLayout 而 CardViews 是 ConstraintLayout 的子项时使用 CardView 的子项的指导方针是什么?
实际上,这不是问题跟踪器所暗示的:-/
为了解决这个问题,在 ConstraintLayout 的任何子项(甚至是非直接后代)中插入的 tools:layout_editor_absolute[X/Y]
属性是 Android Studio 2.2 预览版的错误(自预览版 3 以来已修复)或 4 我相信)。也就是说,他们除了在场之外什么也没做,因为除了 ConstraintLayout 之外的任何东西都不会对他们做任何事情。
现在,对于 CardView 本身 -- 不需要 Nested ConstraintLayout -- CardView 只是一个 FrameLayout,所以如果你想在其中使用 ConstraintLayout,一切有效。
同时,您可以将 CardView 放在 ConstraintLayout 中,这也可以。
问题跟踪器要求的是不同的——它要求在层次结构中 ConstraintLayout > CardView > TextView
对 TextView
应用约束。但这不是 android 布局系统的工作方式,这就是问题作为 WorkingAsIntended 关闭的原因。
当您在此处向 TextView
添加属性时,负责理解这些属性的布局只能是其直接父级——在本例中为 CardView
。 CardView
不是 ConstraintLayout
的子类,它是 FrameLayout
的子类——基本上,它不知道如何处理插入的 ConstraintLayout 属性。
你可以做的是像这样的层次结构:
ConstraintLayout > CardView > ConstraintLayout > TextView
然后可以使用约束来定位 TextView,因为它将是 ConstraintLayout 视图组的直接后代。
我在编辑包含 Relativelayout 的 Cardview 中的 RelativeLayout 时搞砸了! ConstraintLayout 会将相对布局的 wrap_content 更改为 0 并添加 tools:layout_editor_absoluteX="10dp" 相对布局内的所有文本视图将折叠卡片视图的右上角!!! (嵌套 CardView 中的元素与 CardView 外部的元素对齐)
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="357dp"
android:layout_height="114dp"
android:layout_margin="5dp"
app:cardCornerRadius="2dp"
app:contentPadding="10dp"
app:cardElevation="10dp"
tools:layout_editor_absoluteY="36dp"
app:cardBackgroundColor="@android:color/white"
tools:layout_editor_absoluteX="11dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="10dp">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
tools:text="Location"
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
<ImageView
android:src="@drawable/ic_hotel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView3"
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView3"
tools:text="Bangalore"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="10dp"
android:layout_alignBottom="@+id/imageView3"
android:layout_toRightOf="@+id/textView2"
android:layout_toEndOf="@+id/textView2" />
</android.support.v7.widget.CardView>
任何关于使用 ConstraintLayout 设计 RelativeLayout 的指南都会非常完整,使用 ConstraintLayout 时不能在任何地方使用 RelativeLayout?在使用 RelativeLayout 而 CardViews 是 ConstraintLayout 的子项时使用 CardView 的子项的指导方针是什么?
实际上,这不是问题跟踪器所暗示的:-/
为了解决这个问题,在 ConstraintLayout 的任何子项(甚至是非直接后代)中插入的 tools:layout_editor_absolute[X/Y]
属性是 Android Studio 2.2 预览版的错误(自预览版 3 以来已修复)或 4 我相信)。也就是说,他们除了在场之外什么也没做,因为除了 ConstraintLayout 之外的任何东西都不会对他们做任何事情。
现在,对于 CardView 本身 -- 不需要 Nested ConstraintLayout -- CardView 只是一个 FrameLayout,所以如果你想在其中使用 ConstraintLayout,一切有效。
同时,您可以将 CardView 放在 ConstraintLayout 中,这也可以。
问题跟踪器要求的是不同的——它要求在层次结构中 ConstraintLayout > CardView > TextView
对 TextView
应用约束。但这不是 android 布局系统的工作方式,这就是问题作为 WorkingAsIntended 关闭的原因。
当您在此处向 TextView
添加属性时,负责理解这些属性的布局只能是其直接父级——在本例中为 CardView
。 CardView
不是 ConstraintLayout
的子类,它是 FrameLayout
的子类——基本上,它不知道如何处理插入的 ConstraintLayout 属性。
你可以做的是像这样的层次结构:
ConstraintLayout > CardView > ConstraintLayout > TextView
然后可以使用约束来定位 TextView,因为它将是 ConstraintLayout 视图组的直接后代。