1

カード ビューのレイアウトを定義するためにパーセント相対レイアウトを使用しています。幅と水平マージンの属性を定義するときにうまく機能します。ただし、高さとマージンの上/下をパーセンテージで定義しても、レイアウトには影響しません。これが私のカードレイアウトの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>
4

1 に答える 1

0

したがって、なぜこれが起こっているのかについての説明はないと思います。しかし、同様の問題を抱えている人を助ける可能性のある回避策を見つけました。

したがって、パーセント相対レイアウトは widthPercentage に対して適切に機能します。ただし、マージンの開始/左のパーセントまたはマージンの終了/右のパーセントと一緒に結合することはできません。両方 (または 4 つすべて) を組み合わせても問題ありません。

したがって、同様の意味で高さ/マージンを定義する必要があるレイアウトの場合、PercentRelativeLayout 内で垂直方向の線形レイアウトを作成し、その widthPercent/marginPercent を指定し、高さを 0dp に設定し、直線的なレイアウト。

私は主にこれをカード ビューで使用し、画面のサイズや向きに関係なく、要素は画面の特定の部分のみを占めます。

于 2016-12-07T12:53:24.700 に答える