Merge "Fixed the appearance of image messages that are out of view" into rvc-dev

This commit is contained in:
Selim Cinek
2020-04-07 17:58:04 +00:00
committed by Android (Google) Code Review

View File

@@ -40,7 +40,6 @@ import android.os.Bundle;
import android.os.Parcelable; import android.os.Parcelable;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Gravity; import android.view.Gravity;
@@ -537,37 +536,26 @@ public class ConversationLayout extends FrameLayout
} }
private void updateImageMessages() { private void updateImageMessages() {
boolean displayExternalImage = false; View newMessage = null;
ArraySet<View> newMessages = new ArraySet<>(); if (mIsCollapsed && mGroups.size() > 0) {
if (mIsCollapsed) {
// When collapsed, we're displaying all image messages in a dedicated container // When collapsed, we're displaying the image message in a dedicated container
// on the right of the layout instead of inline. Let's add all isolated images there // on the right of the layout instead of inline. Let's add the isolated image there
int imageIndex = 0; MessagingGroup messagingGroup = mGroups.get(mGroups.size() -1);
for (int i = 0; i < mGroups.size(); i++) { MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage();
MessagingGroup messagingGroup = mGroups.get(i); if (isolatedMessage != null) {
MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); newMessage = isolatedMessage.getView();
if (isolatedMessage != null) {
newMessages.add(isolatedMessage.getView());
displayExternalImage = true;
if (imageIndex
!= mImageMessageContainer.indexOfChild(isolatedMessage.getView())) {
mImageMessageContainer.removeView(isolatedMessage.getView());
mImageMessageContainer.addView(isolatedMessage.getView(), imageIndex);
}
imageIndex++;
}
} }
} }
// Remove all messages that don't belong into the image layout // Remove all messages that don't belong into the image layout
for (int i = 0; i < mImageMessageContainer.getChildCount(); i++) { View previousMessage = mImageMessageContainer.getChildAt(0);
View child = mImageMessageContainer.getChildAt(i); if (previousMessage != newMessage) {
if (!newMessages.contains(child)) { mImageMessageContainer.removeView(previousMessage);
mImageMessageContainer.removeView(child); if (newMessage != null) {
i--; mImageMessageContainer.addView(newMessage);
} }
} }
mImageMessageContainer.setVisibility(displayExternalImage ? VISIBLE : GONE); mImageMessageContainer.setVisibility(newMessage != null ? VISIBLE : GONE);
} }
private void bindFacePile() { private void bindFacePile() {