正如你在附加图像上看到的那样,我的卡片右侧有一个三角形阴影位于列表中。
我将所有三个的高程设置为0:
app:cardElevation="0dp"
card_view:cardElevation="0dp"
android:elevation="0dp"
我的所有名单都会发生这种情况。我错过了什么?
答案 0 :(得分:0)
您没有发布完整的布局源,但是我遇到了同样的问题,并且我认为原因是相同的。我有类似的项目列表,每行都是一个自定义视图,该视图扩展了LinearLayout并扩大了一些自定义布局(我们称其为row_item.xml)。列表布局看起来像这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.example.android.RowItem
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.example.android.RowItem
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
RowItem布局(row_item.xml)看起来像这样:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:elevation="10dp"
android:outlineProvider="bounds">
...
</LinearLayout>
问题是RowItem单独使用LinearLayout并使用以下代码膨胀row_item.xml:
LayoutInflater.from(context).inflate(R.layout.row_item, this, true);
这实际上是通过ANOTHER LinearLayout封装了带有高程的LinearLayout,创建了与此类似的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:elevation="10dp"
android:outlineProvider="bounds">
...
</LinearLayout>
</LinearLayout>
在由另一个LinearLayout包裹的LinearLayout上设置高程会导致这些怪异的阴影。解决方案是在外部LinearLayout上设置高程。更好的解决方案是通过在row_item.xml中将<LinearLayout>
替换为<merge>
并在自定义视图的代码中以编程方式设置高程来摆脱双重布局。
如果您没有使用自定义视图,但遇到此问题,则可能未在商品的最外层容器上设置高程。