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());