如何将 circleimageview 保持在 CardView 之前?在约束布局?
Posted
技术标签:
【中文标题】如何将 circleimageview 保持在 CardView 之前?在约束布局?【英文标题】:How can I keep circleimageview ahead of a CardView? in ConstraintLayout? 【发布时间】:2021-10-01 02:30:32 【问题描述】:我想以 CircleImageView 领先于 CardView 的方式显示输出
但我的输出看起来像这样
这是我想与 RecylerView 一起使用的单行 XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/backgroundColor">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circleImageView"
android:layout_
android:layout_
android:src="@drawable/cat_placeholder"
app:civ_border_color="@color/red"
app:civ_border_
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.cardview.widget.CardView
android:layout_
android:layout_
android:layout_marginStart="32dp"
app:cardElevation="50dp"
app:layout_constraintBottom_toBottomOf="@+id/circleImageView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/circleImageView"
app:layout_constraintTop_toTopOf="@+id/circleImageView" />
</androidx.constraintlayout.widget.ConstraintLayout>
【问题讨论】:
将 imageview 和 cardview 包裹在框架布局中并使用边距重叠 我尽力了,谢谢 它不起作用@YashJoshiCircleImageView
的海拔低于 50dp
,因此您需要设置更高的海拔或使它们相同,但在 XML 中交换它们的声明。
【参考方案1】:
考虑将CardView
和CircleImageView
包装在FrameLayout
中。此外,以您希望它们出现的方式为这两个视图设置 android:elevation
属性。
<FrameLayout
android:id="@+id/some_container"
android:layout_
android:layout_
... >
<CardView
android:id:"@+id/card"
android:layout_
android:layout_
android:elevation="..."
...
... />
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circleImageView"
android:layout_
android:layout_
android:src="@drawable/cat_placeholder"
android:elevation="..."
...
... />
</FrameLayout>
不要忘记查看FrameLayout documentation 以了解如何最好地使用它。 (另外,请记住 CardView
本身就是 FrameLayout
。)
另外,我建议您关注您项目的minSdkVersion
。 elevation
属性在 API 21+ 中可用。您的应用不会在较低 API 设备中崩溃,但您可能无法获得所需的外观。强烈考虑使用 FrameLayout 来实现重叠,或者尝试设计自定义视图或使用一些库,例如用于模拟高程的阴影。
【讨论】:
不客气。另外,我的回答中的一个更正:我认为 CardView 有一个单独的海拔属性(您在代码示例中拥有的那个;使用前请检查)。如果我上面的回复解决了您的问题,请将其标记为答案。谢谢。【参考方案2】:将android:elevation="55dp"
添加到您的图像视图
【讨论】:
不是 55dp,只有 5dp。 cardview 的高度为 50 dp,因此需要 50+5 @LalitFauzdar以上是关于如何将 circleimageview 保持在 CardView 之前?在约束布局?的主要内容,如果未能解决你的问题,请参考以下文章
圆形头像CircleImageView和Cardview使用