2013-03-22 3 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.

Другими словами, то, что я хочу, - это место, где сообщения кажутся прокручиваемыми, и каждое прибывающее сообщение должно появляться справа и один за другим. Исходящие сообщения должны отображаться слева. Я, конечно, говорю о внешнем виде приложения SMS в i-phone и т. Д.

Не понимаю, как это сделать. Если кто-то знает обходное решение или любую информацию о том, как реализовать это, было бы очень приятно.

ответ

0

Что вы хотите, это ListView, который показывает ваши сообщения. Любое сообщение будет элементом в вашем ListView. Для контента вам нужно будет выполнить команду Adapter, которая знает вашу структуру данных сообщений. Хороший пример взглядов ListView, адаптер и пользовательских внутри ваш ListView является http://www.ezzylearning.com/tutorial.aspx?tid=1763429

+0

Значит, вы имеете в виду, что TextView не будет использоваться для отображения сообщений? И вы также подразумеваете, что я создам один ListView для входящих сообщений, и мне придется реализовать в адаптере способ отображения входящих и исходящих сообщений? – user1732457

1

Вы должны реализовать экран с ListView, чтобы отобразить всю историю индивидуального сообщения чата и EditText в нижнюю части для пользователя, чтобы ввести новый текст. Могут быть различные элементы пользовательского интерфейса поддержки, такие как заголовок вверху и кнопка «Отправить».

Каждый элемент ListView отображает сообщение, а также дату и другую информацию, если хотите. Вы можете использовать разные фоны для входящих и исходящих сообщений.

Найти любой пример для ListView и начать оттуда.

+0

Мне нужен один адаптер и один вид списка для отображения входящих и исходящих сообщений? – user1732457

+1

Вы будете использовать один ListView для отображения всех сообщений в одном стеке, упорядоченных по времени. Вы захотите сделать некоторое украшение, чтобы указать, какие элементы списка являются входящими и какие элементы отправляются. В вашей первой реализации просто добавьте слово «входящий» или «исходящий» в элемент списка через SimpleAdapter, с которого вы начнете. Позже вы можете делать всевозможные украшения в зависимости от входящих/исходящих, таких как выравнивание влево/вправо, разные цвета, мыслительные пузыри. В качестве особо продвинутого упражнения вы можете использовать фоны с 9 патчами и сделать ваш интерфейс чата похожим на iPhone. –

+0

thnx много, я постараюсь сделать, как вы говорите – user1732457