Android在textview中显示消息,就像普通的短信一样

时间:2013-11-26 15:21:00

标签: android

我正在构建一个Android应用程序,它将发送和接收来自服务器的消息(使用JSON和HTTP发送者)。

现在我认为如果显示的信息就像你发送或接收短信时那样很酷。

例如: Picture

我一直在尝试google几个小时,但我找到的只是如何从你的Android应用程序发送短信。

有人知道这是否可行?

2 个答案:

答案 0 :(得分:1)

列表视图+列表项的2种不同布局(已接收和已发送)。另外,请检查this以帮助您实施包含两种商品类型的列表视图。

答案 1 :(得分:1)

要创建此布局,您需要一个包含两个片段的活动。第一个片段将只包含编辑器的视图。第二个片段是ListFragment,显示消息结果。列表片段将膨胀自定义视图,其中包含背景图像(这是一个小小的语音气泡)和包含日期和消息respectivley的2 TextView小部件,以及带有onClick监听器的ImageView (或ImageButton)为明星。

以下是整体活动布局的示例

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
<fragment
    android:name="com.your.package.MessageListFragment"
    android:id="@+id/message_list"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    />
<fragment
    android:name="com.your.package.EditorFragment"
    android:id="@+id/editor"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

以下是片段的示例,即消息输入接口

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#252525"
>
<Button
    android:id="@+id/attach_photo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="8dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/picture_attach_button"
    android:onClick="onAttachPicture"
    />
<Button
    android:id="@+id/send_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@id/attach_photo"
    android:padding="8dp"
    android:text="Send"
    android:onClick="onSendClick"
    />

<EditText
    android:id="@+id/message"
    android:layout_alignParentLeft="true"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/send_buton"
    android:layout_centerVertical="true"
    android:hint="Enter messaage.."
    />
<ImageView
    android:id="@+id/attached_image"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_above="@id/message"
    />

对于您的ListView片段,对默认列表视图稍作修改以添加一些边距(还有其他方法可以做到这一点)

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#252525"
>
<ListView android:id="@+id/android:list"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:marginLeft="8dp"
          android:marginRight="8dp"
          />
<TextView android:id="@+id/android:empty"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:text="this is an empty list"
    />

您附加到ListView的适配器必须返回一个类似于see here how to implement a custom ListView的自定义UI元素:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/speech_bubble"
>
<ImageButton
    android:id="@+id/favorite_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onFavoriteClick"
    android:src="@drawable/star"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    />
<TextView android:id="@+id/response_message"
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_toLeftOf="@id/favorite_button"
          android:text="this is an empty list"
    />

speech_bubble drawable应该是9patch图像,不会缩放气泡的角落或缩进。

您在onClickListeners中执行所有应用程序后端工作(即onSendClick,onAttachPicture,onFavoriteClick)。您可以通过多种方式填充自定义ListView,但一种方法是使用BroadCastReceiver侦听传入的SMS消息,或在后端代码中定义自己的接收器。