UI问题 --- CardView和其它的控件在同一布局中时,始终覆盖其它控件

原本代码:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <androidx.cardview.widget.CardView
            android:id="@+id/card_icon"
            android:elevation="0dp"
            android:layout_width="30dp"
            android:layout_height="30dp"
            app:cardCornerRadius="45dp">
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/tongji"/>
        </androidx.cardview.widget.CardView>
        <ImageView
            android:id="@+id/more_icon"
            android:elevation="1dp"
            android:layout_width="20dp"
            android:layout_height="10dp"
            android:layout_gravity="bottom||end"
            android:src="@color/money_red"/>
    </FrameLayout>
</LinearLayout>

问题:

card_icon 始终在more_icon之上,但是按照FrameLayout 的特性,最后添加的应该在最上面一层显示。

原因:

CardView 默认会生成阴影效果,这会使其看起来比其他控件高出一层。可以通过 app:elevation 属性或 CardView.setCardElevation() 方法调整 CardView 的高度。

修改后代码:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <androidx.cardview.widget.CardView
            android:id="@+id/card_icon"
            android:elevation="0dp"
            android:layout_width="30dp"
            android:layout_height="30dp"
            app:cardCornerRadius="45dp">
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/tongji"/>
        </androidx.cardview.widget.CardView>
        <ImageView
            android:id="@+id/more_icon"
            android:elevation="2dp"
            android:layout_width="20dp"
            android:layout_height="10dp"
            android:layout_gravity="bottom||end"
            android:src="@color/money_red"/>
    </FrameLayout>
</LinearLayout>
相关推荐
LSL666_5 小时前
5 Repository 层接口
android·运维·elasticsearch·jenkins·repository
alexhilton9 小时前
在Jetpack Compose中创建CRT屏幕效果
android·kotlin·android jetpack
2501_9400940211 小时前
emu系列模拟器最新汉化版 安卓版 怀旧游戏模拟器全集附可运行游戏ROM
android·游戏·安卓·模拟器
下位子11 小时前
『OpenGL学习滤镜相机』- Day9: CameraX 基础集成
android·opengl
参宿四南河三13 小时前
Android Compose SideEffect(副作用)实例加倍详解
android·app
火柴就是我13 小时前
mmkv的 mmap 的理解
android
没有了遇见13 小时前
Android之直播宽高比和相机宽高比不支持后动态获取所支持的宽高比
android
shenshizhong14 小时前
揭开 kotlin 中协程的神秘面纱
android·kotlin
vivo高启强14 小时前
如何简单 hack agp 执行过程中的某个类
android
沐怡旸14 小时前
【底层机制】 Android ION内存分配器深度解析
android·面试