首页 > 解决方案 > 与布局相关的问题

问题描述

我有一个与我的布局有关的问题。

我想要这样的布局。其中折扣百分比显示在交易价格和实际价格的中心。这该怎么做。即使我将相对布局设置为包装内容,我的实际价格相对布局也会占用大量空间。而且在中心添加折扣百分比后,我的实际价格布局略低于。它不等于交易价格。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/Parent.XML">

    <androidx.cardview.widget.CardView style="@style/CardView.Parent">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">


                <LinearLayout style="@style/CardView.TitleDescription">

                    <LinearLayout
                        style="@style/CardView.LinearLayoutParent"
                        android:layout_width="match_parent">


                        <TextView
                            android:id="@+id/just_in_store_name"
                            style="@style/Title.ItemRow" />

                        <TextView
                            android:id="@+id/just_in_deal_description"
                            style="@style/Description.ItemRow"
                            android:layout_height="30dp" />


                    </LinearLayout>

                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_marginRight="4dp"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/ap"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginBottom="6dp"
                            android:fontFamily="@font/calibri"
                            android:text="Deal Price"
                            android:textColor="#757575"
                            android:textSize="16sp" />

                        <TextView
                            android:id="@+id/just_in_deal_price"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/ap"
                            android:fontFamily="@font/calibri"
                            android:text="Deal Price"
                            android:textColor="#3691ea"
                            android:textSize="16sp" />

                    </RelativeLayout>

                    <RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:gravity="center_horizontal"
                        android:layout_marginRight="4dp"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/apv_discount"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="10% OFF"
                            android:textAlignment="center"
                            android:textColor="@color/colorPrimary"
                            android:textSize="18dp"
                            android:textStyle="bold"
                            android:visibility="visible" />

                    </RelativeLayout>

                    <RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="4dp"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/dp"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentRight="true"
                            android:layout_marginBottom="6dp"
                            android:fontFamily="@font/calibri"
                            android:text="Actual Price"
                            android:textColor="#757575"
                            android:textSize="16sp" />

                        <TextView
                            android:id="@+id/just_in_actual_price"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/dp"
                            android:layout_alignParentRight="true"
                            android:fontFamily="@font/calibri"
                            android:text="Actual Price"
                            android:textColor="#3691ea"
                            android:textSize="16sp" />

                    </RelativeLayout>

                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">


                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="72"
                        android:orientation="vertical">

                        <TextView
                            style="@style/SubHeader.ItemRow"
                            android:layout_gravity="center"
                            android:text="Coupon Code" />

                        <TextView
                            android:id="@+id/coupon_code"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginBottom="4dp"
                            android:fontFamily="@font/calibri"
                            android:gravity="center"
                            android:text="Not Required"
                            android:textAlignment="center"
                            android:textAllCaps="true"
                            android:textColor="#308fe9"
                            android:textSize="20sp" />
                    </LinearLayout>
                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="72"
                        android:orientation="vertical">

                        <Button
                            android:id="@+id/just_in_target"
                            style="@style/Button.Appearance"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="GET DEAL" />

                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </RelativeLayout>
    </androidx.cardview.widget.CardView>
</LinearLayout>

标签: androidandroid-layoutandroid-linearlayoutandroid-relativelayout

解决方案


我想在LinearLayout这里提出一个重量属性,以便 [DEAL PRICE - DISCOUNT - ACTUAL PRICE] 中的每个元素在布局中占据相同的空间,据我所知,这就是你想要的。

我准备了一个和你类似的布局。我删除了您用来避免错误的样式(因为我没有它们)。我也CardView从支持库中使用过。请查看以下布局,让我知道这是否符合您的目的。这只是为了让您了解 weight 属性如何服务于您的目的。

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

    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">


                        <TextView
                            android:id="@+id/just_in_store_name"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" />

                        <TextView
                            android:id="@+id/just_in_deal_description"
                            android:layout_width="wrap_content"
                            android:layout_height="30dp" />
                    </LinearLayout>

                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:weightSum="3">

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/ap"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginBottom="6dp"
                            android:text="Deal Price"
                            android:textColor="#757575"
                            android:textSize="16sp" />

                        <TextView
                            android:id="@+id/just_in_deal_price"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/ap"
                            android:text="Deal Price"
                            android:textColor="#3691ea"
                            android:textSize="16sp" />

                    </LinearLayout>

                    <TextView
                        android:id="@+id/apv_discount"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        android:layout_weight="1"
                        android:text="10% OFF"
                        android:textAlignment="center"
                        android:textColor="@color/colorPrimary"
                        android:textSize="18dp"
                        android:textStyle="bold"
                        android:visibility="visible" />

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:orientation="vertical">

                        <TextView
                            android:id="@+id/dp"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignParentRight="true"
                            android:layout_marginBottom="6dp"
                            android:text="Actual Price"
                            android:textColor="#757575"
                            android:textSize="16sp" />

                        <TextView
                            android:id="@+id/just_in_actual_price"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/dp"
                            android:layout_alignParentRight="true"
                            android:text="Actual Price"
                            android:textColor="#3691ea"
                            android:textSize="16sp" />

                    </LinearLayout>

                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">


                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="72"
                        android:orientation="vertical">


                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="Coupon Code" />

                        <TextView
                            android:id="@+id/coupon_code"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginBottom="4dp"
                            android:gravity="center"
                            android:text="Not Required"
                            android:textAlignment="center"
                            android:textAllCaps="true"
                            android:textColor="#308fe9"
                            android:textSize="20sp" />
                    </LinearLayout>
                </LinearLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="2dp"
                    android:layout_marginTop="8dp"
                    android:layout_marginBottom="8dp"
                    android:background="#f2f2f2" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">


                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="72"
                        android:orientation="vertical">

                        <Button
                            android:id="@+id/just_in_target"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:text="GET DEAL" />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </RelativeLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

布局在我的 Android Studio 中显示如下。

在此处输入图像描述

祝你有美好的一天!


推荐阅读