Android 设置“;“外部”;MaterialCardView的底边没有';I don’我没有按预期工作

Android 设置“;“外部”;MaterialCardView的底边没有';I don’我没有按预期工作,android,tooltip,material-components-android,materialcardview,Android,Tooltip,Material Components Android,Materialcardview,我正在尝试构建一个带有阴影的工具提示,如下图所示: 我可以通过使用图像作为背景来实现这一点。但我无法对其应用阴影。因此,在搜索我找到的内容后,它使用MaterialCardView并将materialshapedravable作为背景应用于它 我尝试了以下代码: val shapeDrawable = MaterialShapeDrawable() val shapeAppearanceModel = ShapeAppearanceModel.builder()

我正在尝试构建一个带有阴影的
工具提示
,如下图所示:

我可以通过使用图像作为
背景来实现这一点。但我无法对其应用阴影。因此,在搜索我找到的内容后,它使用
MaterialCardView
并将
materialshapedravable
作为
背景应用于它

我尝试了以下代码:

    val shapeDrawable = MaterialShapeDrawable()
    val shapeAppearanceModel =
        ShapeAppearanceModel.builder().setBottomEdge(TriangleEdgeTreatment(20f, false)).build()
    shapeDrawable.shapeAppearanceModel = shapeAppearanceModel
    materialDialog.background = shapeDrawable
XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="@dimen/width_custom_marker"
    android:layout_height="100dp"
    android:padding="16dp"
    tools:ignore="Overdraw">

    <com.google.android.material.card.MaterialCardView
        android:id="@+id/materialCard"
        android:layout_width="@dimen/width_custom_marker"
        android:layout_height="50dp" />
</RelativeLayout>

我的问题是,当为该对象设置
内部
标志时,使用
false
TriangleEdgeTreatment(30f,true)
无法按预期工作。但是,将标志设置为
true
可以正常工作

三角形边缘处理(30f,假)

三角形边缘处理(30f,真)


提前谢谢

我可以通过以下方式实现:

  <LinearLayout
      android:clipChildren="false"
      android:clipToPadding="false"
      android:padding="16dp"
      ..>

        <com.google.android.material.card.MaterialCardView
         ../>

尝试将android:clipToPadding=“false”和android:clipToPadding=“false”添加到父视图中我以前尝试过。这并不能解决问题。
float size = getResources().getDimension(R.dimen.triangle_size); //16dp
TriangleEdgeTreatment triangleEdgeTreatment = new TriangleEdgeTreatment(size,false);

MaterialCardView cardView = findViewById(R.id.card);
cardView.setShapeAppearanceModel(cardView.getShapeAppearanceModel()
    .toBuilder()
    .setBottomEdge(triangleEdgeTreatment)
    .build());