2013-03-22 116 views
0

我正在寻找一种在我的应用程序中实现聊天的方式。我已经实现了一种获取传入消息和传出消息的方式。所以我唯一的问题是如何为聊天创建一个布局。但我真的不知道。 寻找后,我发现了一个布局,看起来像聊天(http://code.google.com/p/simple-android-instant-messaging-application/source/browse/trunk/res/layout/messaging_screen.xml?r=6):为聊天创建可滚动布局

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:padding="10dip" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    <!--  
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dip" 
     android:text="Friend:" 
    /> 

    <EditText android:id="@+id/friendUserName" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:singleLine="true" 
     android:editable="false" /> 
    --> 
    <TextView android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginBottom="10dip" 
         android:text="Messages:"/> 

    <EditText android:id="@+id/messageHistory" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:clickable="true"   
         android:layout_weight="1" 
        android:editable="false" 
        android:gravity="top" 
        android:scrollbars="vertical" 
        android:scrollbarSize="10px" 
        /> 

    <LinearLayout android:orientation="horizontal" 
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:layout_weight="4"> 

         <EditText  android:id="@+id/message" 
               android:layout_width="fill_parent" 
             android:layout_height="fill_parent" 
             android:gravity="top" 
             android:layout_weight="1" 
             /> 

        <Button android:id="@+id/sendMessageButton" 
           android:layout_width="fill_parent" 
           android:layout_height="fill_parent" 
           android:layout_weight="4" 
           android:text="Send"/> 

     </LinearLayout> 

</LinearLayout> 

,如果我在一个错误的方式使用它,我不知道,但每个传入的消息总是出现在同一个文本视图,用新的传入消息覆盖之前的消息。我想我可能需要为JAVA方面做更多的事情。

换句话说,我想要的是消息看起来是可滚动的地方,并且每个到达的新消息应该出现在右侧,并且一个接一个地出现。传出的消息应该显示在左侧。我正在谈论关于在我的电话等短信应用程序的外观。

我不明白如何做到这一点。如果有人知道解决方法或任何有关如何实施的信息,那将非常受欢迎。

回答

0

你想要的是一个ListView它显示你的消息。任何消息将是您的ListView中的一个项目。对于内容,你必须实现一个知道你的消息数据结构的Adapter。你的ListView里面的ListView,适配器和自定义视图很好的例子是http://www.ezzylearning.com/tutorial.aspx?tid=1763429

+0

所以你的意思是没有TextView将被用来显示消息?而且你也意味着我将为传入和传出消息创建一个ListView,并且我将不得不在传入和传出消息出现的方式中实现适配器。 – user1732457 2013-03-22 23:38:27

1

您需要实现与ListView屏幕来显示所有的个人聊天消息历史和EditText底部为用户输入新的文本。可能有各种支持UI元素,如顶部的标题和'发送'按钮。

每个ListView项目将显示消息以及日期戳和其他信息,如果你想。您可以为传入和传出的邮件使用不同的背景。

查找ListView的任何示例并从此处开始。

+0

我需要一个适配器和一个列表视图来显示传入和传出的消息吗? – user1732457 2013-03-22 23:45:12

+1

您将使用一个ListView来显示按时间排序的单个堆栈中的所有消息。你会想做一些装饰来指出哪些列表项目是传入的,哪些项目是传出的。在你的第一个实现中,只需通过SimpleAdapter将单词“传入”或“传出”放入列表项中,然后开始。之后,您可以根据传入/传出进行各种装饰,例如左/右对齐,不同颜色,思想泡泡。作为一项特别高级的练习,您可以使用9贴片背景,使您的聊天界面看起来就像iPhone一样。 – 2013-03-22 23:50:03

+0

thnx很多,我会尽量按你说的去做 – user1732457 2013-03-23 00:37:52