消息气泡自定义可绘制

问题描述

我将在下面分享我要在本机Android中开发消息气泡的图片

Have to make like this

我已经用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>

上面的代码如下

The Above code

请帮助我制作第一张图片

谢谢

解决方法

您可以使用ShapeAppearanceModel将自定义EdgeTreatment应用于小部件,例如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

enter image description here

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

注意:它至少需要材料组件库的版本 db.collection.find( { "receivingAgentId": { "_id": ObjectID("5f6bbf5b8b094c14103a777b")} })

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...