我正在构建一个Android应用程序,它将发送和接收来自服务器的消息(使用JSON和HTTP发送者)。
现在我认为如果显示的信息就像你发送或接收短信时那样很酷。
例如: Picture
我一直在尝试google几个小时,但我找到的只是如何从你的Android应用程序发送短信。
有人知道这是否可行?
答案 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消息,或在后端代码中定义自己的接收器。