3

我将分享下面的图片,我想在 Native Android 中开发我的消息气泡必须像这样

我已经在 Custom Drawable XML 中编写了一些代码,请看一下,我将分享图像的外观,首先看代码:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>

    <rotate
        android:fromDegrees="55"
        android:pivotX="100%"
        android:pivotY="0%"
        android:toDegrees="0">
        <shape android:shape="rectangle">
            <corners android:radius="10dp" />
            <solid android:color="#00A1E4" />
        </shape>
    </rotate>
</item>
<item android:right="28dp">
    <shape android:shape="rectangle">
        <solid android:color="#00A1E4" />
        <corners android:radius="10dp" />
    </shape>
</item>

上面的代码看起来像这样以上代码

请帮助我如何制作第一张图片。

谢谢

4

1 回答 1

1

您可以使用 将ShapeAppearanceModel自定义应用EdgeTreatment到例如 a 的小部件CardView

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

       <com.google.android.material.card.MaterialCardView
          android:id="@+id/cardview"
          android:layout_height="100dp"
          app:cardCornerRadius="24dp"
          app:cardBackgroundColor="@color/..."/>

    </LinearLayout>

然后,您可以ShapeAppearanceModel使用内置函数应用自定义MarkerEdgeTreatment,该函数在给定圆半径的边缘上绘制箭头。就像是:

    val markerEdgeTreatment = MarkerEdgeTreatment(cardview.radius)
    val offsetEdgeTreatment = OffsetEdgeTreatment(markerEdgeTreatment, 90f)

    cardview.setShapeAppearanceModel(
        cardview.getShapeAppearanceModel()
            .toBuilder()
            .setRightEdge(offsetEdgeTreatment)
            .build()
    )

在此处输入图像描述

您还可以自定义扩展EdgeTreatment和覆盖getEdgePath方法的边缘形状。

注意:它至少需要1.2.0材料组件库的版本。

于 2020-10-17T08:14:48.577 回答