【问题标题】:Move FrameLayout from CardView to overlap it从 CardView 移动 FrameLayout 以重叠它
【发布时间】:2019-12-21 21:05:41
【问题描述】:

我正在尝试做这种类型的布局,问题是我不能像这张图片那样在图片上方移动 FrameLayout

代码

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

    <androidx.cardview.widget.CardView
        android:layout_width="250dp"
        android:layout_height="200dp"
        android:layout_margin="8dp"
        android:backgroundTint="@color/premiofondo"
        android:foregroundGravity="center"
        android:orientation="vertical">

        <FrameLayout
            android:layout_width="125dp"
            android:layout_height="50dp"
            android:background="@color/blanco">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:gravity="center"
                android:textColor="@color/negro"
                android:layout_gravity="center"
                android:textStyle="bold"
                android:text="1º Premio"/>

        </FrameLayout>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center"
            android:textSize="30sp"
            android:textStyle="bold"
            android:elevation="8dp"
            android:text="Primer premio \n Orden de compra \n $100.000"/>

    </androidx.cardview.widget.CardView>

</LinearLayout>

我的输出

我想将 1º premio 替换为第一张图片,我该怎么做?

【问题讨论】:

    标签: android android-layout kotlin android-cardview


    【解决方案1】:

    使用ConstraintLayout,将FrameLayout移到CardView之外,并设置FrameLayout的高度如下:

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            >
    
        <androidx.cardview.widget.CardView
                android:id="@+id/card_view"
                android:layout_width="250dp"
                android:layout_height="200dp"
                android:layout_margin="8dp"
                android:layout_marginStart="22dp"
                android:backgroundTint="@color/premiofondo"
                android:foregroundGravity="center"
                android:orientation="vertical"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                >
    
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:elevation="8dp"
                    android:gravity="center"
                    android:text="Primer premio \n Orden de compra \n $100.000"
                    android:textSize="30sp"
                    android:textStyle="bold"
                    />
    
        </androidx.cardview.widget.CardView>
    
        <FrameLayout
                android:layout_width="125dp"
                android:layout_height="50dp"
                android:layout_marginTop="8dp"
                android:background="@color/blanco"
                android:elevation="12dp"
                android:outlineProvider="none"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="@id/card_view"
                >
    
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="1º Premio"
                    android:textColor="@color/negro"
                    android:textSize="25sp"
                    android:textStyle="bold"
                    />
    
        </FrameLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    请注意,android:outlineProvider="none" 使高程阴影不可见。

    【讨论】:

      【解决方案2】:

      有很多方法可以做到这一点。在线性布局中采用新的框架布局,并从卡片视图中移出框架布局。试试这个...

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:gravity="center">
      
      <FrameLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
      
          <androidx.cardview.widget.CardView
              android:layout_width="250dp"
              android:layout_height="200dp"
              android:layout_margin="8dp"
              android:backgroundTint="@color/premiofondo"
              android:foregroundGravity="center"
              android:orientation="vertical">
      
              <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center"
                  android:elevation="8dp"
                  android:gravity="center"
                  android:text="Primer premio \n Orden de compra \n $100.000"
                  android:textSize="30sp"
                  android:textStyle="bold" />
      
          </androidx.cardview.widget.CardView>
      
          <FrameLayout
              android:layout_width="125dp"
              android:layout_height="50dp"
              android:background="@color/blanco">
      
              <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center"
                  android:gravity="center"
                  android:text="1º Premio"
                  android:textColor="@color/negro"
                  android:textSize="25sp"
                  android:textStyle="bold" />
      
          </FrameLayout>
      
      
        </FrameLayout>
      
       </LinearLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-15
        • 1970-01-01
        • 2018-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        相关资源
        最近更新 更多