使用形状或9-patch图像创建聊天气泡

5
我正在尝试为我目前正在开发的Android应用程序中的聊天气泡创建一个模板。最终结果应该类似于这样:enter image description here
我尝试使用形状进行操作,但无法正确获取多个图层。我还尝试了9-patch图像,但只是创建了9-patch而已。我不知道如何使用它,尤其是与头像、消息标题和内容位置相关的部分。
有人能帮忙吗?
我对形状的了解相当有限,尽管我认为我知道足够了解你们将要说什么 :)

正如您所看到的,标题栏中有一个头像和多个文本视图,用于显示时间和消息。这就是我在9-patch方面遇到困难的地方。 - stoic
1
如果您在ViewGroup中有多个视图...只需将背景分配给ViewGroup,然后就可以了。 - Phantômaxx
1
@DerGolem 真的很抱歉。我没有看到评论,只是简单地回答了问题。我正在删除我的答案,请在下面发布您的解决方案作为答案。 - Antrromet
以前从未使用过ViewGroups...有任何示例吗? - stoic
1
@DustyRoberts ViewGroups 就是你的视图集合。我相信你一定听说过并使用过LinearLayoutRelativeLayout,它们只是ViewGroup的直接子类。 - Antrromet
显示剩余3条评论
1个回答

6
一个9 patch非常简单。这里有一个不错的教程:9 Patch简易指南
只需将扩展名改为.9.png,而不是只改成.png
将其用作您的ViewGroup(视图容器)的背景,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/row"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bubble_left"
    android:layout_margin="8dp"
    android:padding="8dp"
    >
    <!-- The User -->
    <TextView
        android:id="@+id/txtUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
    />
    <!-- The Date -->
    <TextView
        android:id="@+id/txtDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/txtUser"
    />
    <!-- The Message -->
    <TextView
        android:id="@+id/txt2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/txtDate"
    />
</RelativeLayout>

我让你自由选择你想要的图形(以匹配你的品味,不破坏你的乐趣)。
显然,你可能想为左侧准备一个气泡,为右侧准备另一个气泡(或者有不同颜色的角落气泡),并在你的Java代码中相应地交换它们。

您的链接已经失效,请更新链接。我正在寻找相同的解决方案。谢谢。 - Karue Benson Karue
@KarueBensonKarue 我更新了链接,指向官方文档。Radleymarx的教程确实更好,但不幸的是他们已经删除了该页面。 - Phantômaxx
1
哇!好的..谢谢回复。 - Karue Benson Karue
但是我还没有看到任何好的教程从零开始教授9 patch图像。有什么推荐吗? - Karue Benson Karue
好的,这是关于在边框上添加黑色标记(1像素宽),其余的边框必须是透明的。在缩放图像之后执行此操作。否则,边框也会被缩放。当然,还要选择正确的位置来放置标记。 - Phantômaxx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接