Android:如何创建动态变化的图像仍然看起来不错?

时间:2014-10-12 22:04:23

标签: android android-layout android-imageview android-drawable

我想知道如何做Whatsapp或Telegram在他们的留言箱中做的事情。 无论他们有多大,他们总是看起来很好,与你发送的文字有关。

我自己尝试这样做,我拍了这张照片: my chat bubble

现在我在我的App中使用它:(它保存为chat_bubble.png)

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="0dp"
    android:layout_marginRight="0dp"
    android:id="@+id/list_item"
    android:gravity="right">

    <LinearLayout
        android:id="@+id/row_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dip"
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:layout_marginTop="5dip"
        android:background="@drawable/chat_bubble"
        android:orientation="horizontal"
        android:singleLine="false" >

        <TextView
            android:id="@+id/list_item_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:paddingLeft="5dp"
            android:text="ProgramTitle"
            android:textColor="@android:color/white"
            android:textSize="20sp" />

        <ImageView
            android:id="@+id/messageIcon"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginTop="15dp"
            android:layout_marginRight="10dp"
            android:padding="2dp"
            android:src="@drawable/wait" />
    </LinearLayout>

</LinearLayout>

这是ListView中每个ListItem的布局。 它看起来像这样:

chat bubble with less text

但如果我使用较长的文字,那么图片会被拉长,所以它看起来不再那么好看了: chat bubble with more text

现在我的问题是,怎么可能没有这个问题。有什么好主意可以解决这个问题吗?太棒了。

1 个答案:

答案 0 :(得分:2)

您应该从图像中创建一个9补丁。

在Android Dev上查看本教程。网站:http://developer.android.com/tools/help/draw9patch.html

在9补丁图像中,您声明图像的哪些部分是“可伸展的”,哪些部分不是。它基本上是一个 .png 图像,其中图像的1 px部分告诉Android,拉伸此部分。您应该将图像保存在名为drawable的{​​{1}}目录中,然后将其称为something.9.png

Android SDK包含一个小程序,用于从常见图像创建9个补丁图像。