diff --git a/res/layout/chat.xml b/res/layout/chat.xml
index da1824cfe..41267911e 100644
--- a/res/layout/chat.xml
+++ b/res/layout/chat.xml
@@ -188,17 +188,17 @@
+ android:layout_below="@+id/view"/>
diff --git a/res/layout/chat_bubble.xml b/res/layout/chat_bubble.xml
index 79440b77c..f76064fd2 100644
--- a/res/layout/chat_bubble.xml
+++ b/res/layout/chat_bubble.xml
@@ -17,9 +17,10 @@
android:id="@+id/event"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_toLeftOf="@id/delete_message"
- android:gravity="center_vertical"
- android:orientation="horizontal">
+ android:layout_toLeftOf="@id/delete_message"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:gravity="center_vertical">
+
mHistory;
private List mParticipants;
@@ -177,6 +181,7 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
holder.eventLayout.setVisibility(View.GONE);
holder.bubbleLayout.setVisibility(View.GONE);
+ holder.separatorLayout.setVisibility(i == 0 ? View.GONE : View.VISIBLE); // Hide separator if first item in list
holder.delete.setVisibility(isEditionEnabled() ? View.VISIBLE : View.GONE);
holder.messageText.setVisibility(View.GONE);
holder.messageImage.setVisibility(View.GONE);
@@ -200,8 +205,21 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
EventLog event = (EventLog)getItem(i);
if (event.getType() == EventLog.Type.ConferenceChatMessage) {
holder.bubbleLayout.setVisibility(View.VISIBLE);
-
final ChatMessage message = event.getChatMessage();
+
+ if (i > 0) {
+ EventLog previousEvent = (EventLog)getItem(i-1);
+ if (previousEvent.getType() == EventLog.Type.ConferenceChatMessage) {
+ ChatMessage previousMessage = previousEvent.getChatMessage();
+ if (previousMessage.getFromAddress().weakEqual(message.getFromAddress())) {
+ holder.separatorLayout.setVisibility(View.GONE);
+ }
+ } else {
+ // No separator if previous event is not a message
+ holder.separatorLayout.setVisibility(View.GONE);
+ }
+ }
+
holder.messageId = message.getMessageId();
message.setUserData(holder);
@@ -253,10 +271,10 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
if (isEditionEnabled()) {
layoutParams.addRule(RelativeLayout.LEFT_OF, holder.delete.getId());
- layoutParams.setMargins(200, 10, 10, 10);
+ layoutParams.setMargins(SIDE_MARGIN, MARGIN_BETWEEN_MESSAGES/2, 0, MARGIN_BETWEEN_MESSAGES/2);
} else {
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- layoutParams.setMargins(200, 10, 10, 10);
+ layoutParams.setMargins(SIDE_MARGIN, MARGIN_BETWEEN_MESSAGES/2, 0, MARGIN_BETWEEN_MESSAGES/2);
}
holder.background.setBackgroundColor(0x26ff6600);
@@ -275,10 +293,10 @@ public class ChatEventsAdapter extends ListSelectionAdapter {
if (isEditionEnabled()) {
layoutParams.addRule(RelativeLayout.LEFT_OF, holder.delete.getId());
- layoutParams.setMargins(200, 10, 10, 10);
+ layoutParams.setMargins(SIDE_MARGIN, MARGIN_BETWEEN_MESSAGES/2, 0, MARGIN_BETWEEN_MESSAGES/2);
} else {
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
- layoutParams.setMargins(10, 10, 200, 10);
+ layoutParams.setMargins(0, MARGIN_BETWEEN_MESSAGES/2, SIDE_MARGIN, MARGIN_BETWEEN_MESSAGES/2);
}
holder.background.setBackgroundColor(0x19595959);
diff --git a/src/android/org/linphone/chat/GroupChatFragment.java b/src/android/org/linphone/chat/GroupChatFragment.java
index 61e6a00c7..de465bbb6 100644
--- a/src/android/org/linphone/chat/GroupChatFragment.java
+++ b/src/android/org/linphone/chat/GroupChatFragment.java
@@ -511,7 +511,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
getContactsForParticipants();
- mRemoteComposing.setVisibility(View.INVISIBLE);
+ mRemoteComposing.setVisibility(View.GONE);
}
private void displayChatRoomHeader() {