ConstraintLayout - это разработка CardView, пока он родительский?

Я испортил при редактировании RelativeLayout внутри Cardview, который содержит RelativeLayout! ConstraintLayout изменит wrap_content относительного макета на 0 и добавит инструменты: 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>

любое руководство по проектированию RelativeLayout с ConstraintLayout было бы полно, RelativeLayout нигде не может быть использован при использовании ConstraintLayout? Каков порядок использования дочерних элементов CardView при использовании RelativeLayout, в то время как CardViews является дочерним элементом ConstraintLayout?

Ответы на вопрос(1)

Решение Вопроса

это не то, что подразумевает система отслеживания проблем: - /

Чтобы прояснить это,tools:layout_editor_absolute[X/Y] Атрибуты, вставленные в любые дочерние элементы ConstraintLayout (даже непрямого потомка), были ошибкой предварительного просмотра в Android Studio 2.2 (я думаю, это было исправлено после предварительного просмотра 3 или 4). Тем не менее, они в буквальном смысле ничего не сделали, кроме присутствия, так как ничего, кроме ConstraintLayout не будет ничего с ними делать.

Теперь для самого CardView - нет необходимостиВложенный ConstraintLayout - CardView - это просто FrameLayout, поэтому, если вы хотите использовать ConstraintLayout внутри него, все работает.

Параллельно вы можете поместить CardView в ConstraintLayout, который тоже работает.

То, о чем просил трекер проблем, было другим - оно спрашивалось в такой иерархии, чтоConstraintLayout > CardView > TextView применять ограничения наTextView, Но это не так, как работает система верстки Android, поэтому проблема была закрыта как WorkingAsIntended.

Когда вы добавляете атрибуты вTextView здесь макет, ответственный за понимание этих атрибутов, может быть только его прямым родителем - в этом случаеCardView, А такжеCardView не подклассConstraintLayoutэто подклассFrameLayout - в основном, он не знает, что делать с этими вставленными атрибутами ConstraintLayout.

Вместо этого вы можете создать иерархию

ConstraintLayout > CardView > ConstraintLayout > TextView

Затем TextView можно позиционировать с использованием ограничений, так как он будет прямым потомком видовой группы ConstraintLayout.

 Nicolas Roard12 авг. 2016 г., 19:53
Бета 1 была выпущена, хотя, вероятно, лучшая идея :)tools.android.com/recent/androidstudio22betaavailable
 LOG_TAG12 авг. 2016 г., 18:41
Спасибо за подробный ответ !, попробую с предпросмотром 3 или 4!
 Dexter03 мар. 2017 г., 05:48
Один из способов, который я использую для этого, состоит в том, чтобы спроектировать CardView в отдельном макете, а затем просто добавить его в текущую иерархию, скопировав код XML или используя include. Это сохраняет ограничения и вид отдельно.
 silentsudo12 нояб. 2017 г., 20:18
Да, Декстеры ответят, посмотрите обоснованное решение
 Radu07 нояб. 2016 г., 21:27
Хорошо, спасибо за объяснение. Но тогда как в этом случае ConstraintLayout разрешает глубокую иерархию в макетах? Выглядит для меня так же плохо, как и во вложении LinearLayouts ...

Ваш ответ на вопрос