注意:这似乎是一个重复的问题,但是我还没有人回答我的问题/提供解决方案。
我有一个布局,我希望设计如下:
这是到目前为止我尝试过的事情:
当前布局设计:
下面(有问题)找到了相应的(尝试过的)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"
设置。
我不确定是什么引起了问题,但是任何建议都将不胜感激。
答案 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>
输出
答案 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>