分区的RelativeLayout的左侧RelativeLayout与右侧的RelativeLayout重叠

时间:2019-01-28 07:15:49

标签: android android-layout textview android-relativelayout

注意:这似乎是一个重复的问题,但是我还没有人回答我的问题/提供解决方案。

我有一个布局,我希望设计如下:

enter image description here

这是到目前为止我尝试过的事情:

当前布局设计:

enter image description here

下面(有问题)找到了相应的(尝试过的)XML布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/layout_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@id/layout_details">

        <TextView
            android:id="@+id/subscriptionCost"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:text="$ 0.00"
            android:textAlignment="textEnd"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/currency"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/subscriptionCost"
            android:layout_alignParentEnd="true"
            android:text="(USD)"
            android:textAlignment="textEnd"
            android:textSize="16sp"
            android:textStyle="italic" />
    </RelativeLayout>


    <RelativeLayout
        android:id="@+id/layout_details"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true">

        <TextView
            android:id="@+id/subscriptionDuration"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:text="2 Year Subscription"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:textSize="24sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/subscriptionMessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/subscriptionDuration"
            android:layout_alignParentStart="true"
            android:text="Oon until Jaunarasdasddasdasd asd asdasdda sdasd asda sd as da sd as da sd a sd as d as d as d asdasdasday 2020"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:textSize="16sp"
            android:textStyle="italic" />
    </RelativeLayout>

</RelativeLayout>

我认为我想要实现的布局是显而易见的,但尽管如此,我还是要解释一下。

该布局用于概述我的应用程序中提供的订阅。

  • 订阅期限位于左上角,期限下方带有更多详细信息(可以多行显示)。

  • 订阅价格在右上角,并在其所使用的货币下方。

问题

我有2个RelativeLayout作为左右布局。左布局应能够根据屏幕尺寸缩放,而右布局应保持为wrap_content宽度。

将当前的右侧RelativeLayout和子级设为wrap_content,看来左侧的RelativeLayout只是重叠并强制下面的右侧布局,即使android:layout_alignParentTop="true"android:layout_alignParentEnd="true"设置。

我不确定是什么引起了问题,但是任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

无需为此使用嵌套RelativeLayout

您可以使用单个RelativeLayout

尝试一下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <TextView
        android:id="@+id/subscriptionDuration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_toStartOf="@id/subscriptionCost"
        android:text="2 Year Subscription"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textSize="24sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/subscriptionCost"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:text="$ 0.00"
        android:textAlignment="textEnd"
        android:textSize="24sp" />


    <TextView
        android:id="@+id/subscriptionMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/subscriptionDuration"
        android:layout_alignParentStart="true"
        android:layout_toStartOf="@id/currency"
        android:text="Oon until Jaunarasdasddasdasd asd asdasdda sdasd asda sd as da sd as da sd a sd as d as d as d asdasdasday 2020"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
        android:textSize="16sp"
        android:textStyle="italic" />


    <TextView
        android:id="@+id/currency"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/subscriptionCost"
        android:layout_alignParentEnd="true"
        android:text="(USD)"
        android:textAlignment="textEnd"
        android:textSize="16sp"
        android:textStyle="italic" />

</RelativeLayout>

输出

enter image description here

答案 1 :(得分:0)

您好,经过一些检查,我建议您使用ConstraintLayout: 这是符合您要求的完整代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">


  <TextView
    android:id="@+id/subscriptionDuration"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="2 Year Subscription"
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

  <TextView

    android:id="@+id/subscriptionMessage"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_below="@id/subscriptionDuration"
    android:layout_alignParentStart="true"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:text="Oon until Jaunarasdasddasdasd asd asdasdda sdasd asda sd as da sd as da sd a sd as d as d as d asdasdasday 2020"
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
    android:textSize="16sp"
    android:textStyle="italic"
    app:layout_constraintEnd_toStartOf="@+id/currency"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/subscriptionDuration" />


  <TextView
    android:id="@+id/subscriptionCost"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="8dp"
    android:text="$ 0.00"
    android:textAlignment="textEnd"
    android:textSize="24sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="@+id/subscriptionDuration" />

  <TextView
    android:id="@+id/currency"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/subscriptionCost"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:text="(USD)"
    android:textAlignment="textEnd"
    android:textSize="16sp"
    android:textStyle="italic"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/subscriptionCost" />

</android.support.constraint.ConstraintLayout>