PercentRelativeLayout не принимает высоту и поля сверху / снизу связанные атрибуты в процентах

Я использую относительное расположение процентов, чтобы определить расположение представления карты. Он отлично работает при определении атрибутов ширины и горизонтального поля. Однако определение высоты и полей сверху / снизу в процентах не влияет на макет. Вот xml моего макета карты:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_margin="10dp"
    app:cardBackgroundColor="@color/cardview_light_background"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/exam_card">
    <android.support.percent.PercentRelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:textStyle="bold"
            android:textColor="@color/colorPrimaryDark"
            app:layout_widthPercent="60%"
            android:layout_height="wrap_content"
            android:textSize="30sp"
            android:id="@+id/exam_name"/>
        <TextView
            app:layout_marginLeftPercent="58.5%"
            app:layout_marginStartPercent="58.5%"
            android:textColor="@color/colorPrimary"
            android:textStyle="bold"
            app:layout_widthPercent="20%"
            android:id="@+id/from_test_date"
            android:layout_height="wrap_content"
            android:textSize="28sp"
            />
        <TextView
            app:layout_widthPercent="20%"
            app:layout_marginLeftPercent="56%"
            app:layout_marginStartPercent="56%"
            android:textColor="@color/colorPrimary"
            android:textStyle="bold"
            android:layout_below="@+id/from_test_date"
            android:id="@+id/from_time_year"
            android:layout_height="wrap_content"
            android:textSize="13sp"
            />
        <View
            app:layout_marginLeftPercent="73%"
            app:layout_marginRightPercent="24%"
            android:id="@+id/divider"
            android:layout_width="match_parent"
            android:layout_height="4dp"
            android:background="@color/colorPrimaryDark"/>
        <TextView
            app:layout_marginLeftPercent="79.5%"
            app:layout_marginStartPercent="79.5%"
            android:textColor="@color/colorPrimary"
            android:textStyle="bold"
            app:layout_widthPercent="20%"
            android:id="@+id/to_test_date"
            android:layout_height="wrap_content"
            android:textSize="28sp"
            />
        <TextView
            app:layout_marginLeftPercent="77%"
            app:layout_marginStartPercent="77%"
            android:textColor="@color/colorPrimary"
            android:textStyle="bold"
            android:layout_below="@+id/to_test_date"
            app:layout_widthPercent="20%"
            android:id="@+id/to_time_year"
            android:layout_height="wrap_content"
            android:textSize="13sp"
            />
    </android.support.percent.PercentRelativeLayout>

</android.support.v7.widget.CardView>

1 ответ

Поэтому я не думаю, что есть какое-либо объяснение тому, почему это происходит. Но я нашел работу, которая может помочь кому-то, имеющему подобные проблемы.

Таким образом, относительное расположение в процентах прекрасно работает для widthPercentage. Тем не менее, вы не можете соединить его вместе с начальным / левым процентом поля или конечным / правым процентом поля, оба (или все 4) из которых работают вместе.

Таким образом, для макетов, где вы также должны определить высоту / поле в аналогичном смысле, вы можете создать линейный макет с вертикальной ориентацией в PercentRelativeLayout, указать его widthPercent / marginPercent, установить высоту 0dp и использовать весовой атрибут для элементов в пределах. линейная планировка.

Я в основном использовал это в виде карты, и элементы занимают только определенную часть экрана независимо от размера экрана или ориентации.

Другие вопросы по тегам