【问题标题】:Issues related to Layout与布局相关的问题
【发布时间】:2019-10-10 15:48:32
【问题描述】:

我的布局有问题。

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

<?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>

【问题讨论】:

    标签: android android-layout android-linearlayout android-relativelayout


    【解决方案1】:

    我想在这里提出一个带有权重属性的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 中显示如下。

    祝你有美好的一天!

    【讨论】:

      【解决方案2】:

      试试这个

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
      
      <androidx.cardview.widget.CardView
          android:layout_width="match_parent"
          android:layout_height="match_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"
                  android:padding="20dp">
      
                  <LinearLayout
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content">
      
                      <LinearLayout
                          android:layout_width="match_parent"
                          android:layout_height="wrap_content"
                          android:orientation="vertical">
      
                          <TextView
                              android:id="@+id/just_in_store_name"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:text="Loading"
                              android:textSize="20sp"
                              android:textColor="#000"
                              android:textStyle="bold"/>
      
                          <TextView
                              android:id="@+id/just_in_deal_description"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:text="Loading"
                              android:layout_marginTop="5dp"
                              android:textSize="15sp"
                              android:textColor="#3A56F3"/>
                      </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="0dp"
                          android:layout_height="match_parent"
                          android:layout_weight=".3"
                          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" />
      
                      </RelativeLayout>
      
                      <RelativeLayout
                          android:layout_width="0dp"
                          android:layout_height="match_parent"
                          android:gravity="center"
                          android:layout_weight=".3"
                          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="0dp"
                          android:layout_height="wrap_content"
                          android:layout_weight=".3"
                          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" />
      
                      </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
                              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"
                              android:background="#78ca28"
                              android:textColor="#fff"/>
      
                      </LinearLayout>
                  </LinearLayout>
              </LinearLayout>
          </RelativeLayout>
      </androidx.cardview.widget.CardView>
      

      我对您的布局进行了一些更改,增加了权重以对齐中间的百分比文本,还删除了样式文件,因为我没有任何样式文件的参考。

      希望对你有用!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 2011-02-22
        • 2011-02-17
        • 2020-05-21
        相关资源
        最近更新 更多