web-dev-qa-db-ja.com

親であるCardViewの設計は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を使用している間、Re​​lativeLayoutはどこでも使用できませんか? CardViewsがConstraintLayoutの子であるときにRelativeLayoutを使用しているときにCardViewの子を使用するためのガイドラインは何ですか?

9
LOG_TAG

実際、それは課題追跡が意味するものではありません:-/

それを明確にするために、tools:layout_editor_absolute[X/Y] ConstraintLayoutの子(直接でない子孫であっても)に挿入された属性は、Android Studio 2.2プレビューのバグです(プレビュー3または4以降は修正されていると思います)。 ConstraintLayout以外は何も実行しないため、文字列は存在すること以外に何もしませんでした。

ここで、CardView自体-Nested ConstraintLayout-CardViewは単にFrameLayoutである必要がないため、内部でConstraintLayoutを使用したい場合それ、すべてが機能します。

並行して、CardViewをConstraintLayout内に配置することもできます。

Issue Trackerが求めていたものは異なりました。それは、ConstraintLayout > CardView > TextViewは、TextViewに制約を適用します。しかし、Androidレイアウトシステムが機能する方法ではないため、WorkingAsIntendedとして問題がクローズされました。

ここでTextViewに属性を追加すると、それらの属性を理解する責任があるレイアウトは、その直接の親(この場合はCardView)のみになることができます。そしてCardViewConstraintLayoutのサブクラスではなく、FrameLayoutのサブクラスです-基本的に、挿入されたこれらのConstraintLayout属性をどうするかを知りません。

代わりにできることは、次のような階層です。

ConstraintLayout > CardView > ConstraintLayout > TextView

TextViewは、ConstraintLayoutビューグループの直接の子孫になるため、制約を使用して配置できます。

enter image description here

15
Nicolas Roard