diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt index e544576cfb..bf75f7d8e7 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageTextItem.kt @@ -19,9 +19,10 @@ package im.vector.riotx.features.home.room.detail.timeline.item import android.content.res.ColorStateList import android.text.method.MovementMethod import android.view.Gravity +import android.view.View import android.widget.FrameLayout +import android.widget.RelativeLayout import androidx.appcompat.widget.AppCompatTextView -import androidx.core.content.ContextCompat import androidx.core.text.PrecomputedTextCompat import androidx.core.widget.TextViewCompat import com.airbnb.epoxy.EpoxyAttribute @@ -71,14 +72,15 @@ abstract class MessageTextItem : AbsMessageItem() { null) holder.messageView.setTextFuture(textFuture) - var bubbleStyle = if (incomingMessage || outgoingMessage) BubbleThemeUtils.getBubbleStyle(holder.messageView.context) else BUBBLE_STYLE_NONE + val bubbleStyle = if (incomingMessage || outgoingMessage) BubbleThemeUtils.getBubbleStyle(holder.messageView.context) else BUBBLE_STYLE_NONE + val reverseBubble = outgoingMessage && bubbleStyle == BUBBLE_STYLE_BOTH when (bubbleStyle) { BUBBLE_STYLE_NONE -> { holder.messageView.background = null holder.messageView.setPadding(0, 0, 0, 0) } BUBBLE_STYLE_START, BUBBLE_STYLE_BOTH -> { - holder.messageView.setBackgroundResource(R.drawable.msg_bubble_incoming) + holder.messageView.setBackgroundResource(if (reverseBubble) R.drawable.msg_bubble_outgoing else R.drawable.msg_bubble_incoming) var tintColor = ColorStateList( arrayOf(intArrayOf(0)), intArrayOf(ThemeUtils.getColor(holder.messageView.context, @@ -96,8 +98,10 @@ abstract class MessageTextItem : AbsMessageItem() { } } if (holder.messageView.layoutParams is FrameLayout.LayoutParams) { - (holder.messageView.layoutParams as FrameLayout.LayoutParams).gravity = - if (outgoingMessage && bubbleStyle == BUBBLE_STYLE_BOTH) Gravity.END else Gravity.START + //(holder.messageView.layoutParams as FrameLayout.LayoutParams).gravity = + // if (outgoingMessage && bubbleStyle == BUBBLE_STYLE_BOTH) Gravity.END else Gravity.START + val defaultReverse = holder.messageView.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL; + (holder.messageView.parent.parent as RelativeLayout).layoutDirection = if (reverseBubble != defaultReverse) View.LAYOUT_DIRECTION_RTL else View.LAYOUT_DIRECTION_LTR } } diff --git a/vector/src/main/res/drawable-hdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-hdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..8e7ccc0cc8 Binary files /dev/null and b/vector/src/main/res/drawable-hdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-ldrtl-hdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-ldrtl-hdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..7fed0a806a Binary files /dev/null and b/vector/src/main/res/drawable-ldrtl-hdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-ldrtl-mdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-ldrtl-mdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..4e7e464037 Binary files /dev/null and b/vector/src/main/res/drawable-ldrtl-mdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-ldrtl-xhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-ldrtl-xhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..0661fdba78 Binary files /dev/null and b/vector/src/main/res/drawable-ldrtl-xhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-ldrtl-xxhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-ldrtl-xxhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..009c721919 Binary files /dev/null and b/vector/src/main/res/drawable-ldrtl-xxhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-ldrtl-xxxhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-ldrtl-xxxhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..f0d0d9ee5c Binary files /dev/null and b/vector/src/main/res/drawable-ldrtl-xxxhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-mdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-mdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..5ca9b14d64 Binary files /dev/null and b/vector/src/main/res/drawable-mdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-xhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-xhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..52cb936a8e Binary files /dev/null and b/vector/src/main/res/drawable-xhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-xxhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-xxhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..5b2a2fffc0 Binary files /dev/null and b/vector/src/main/res/drawable-xxhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/drawable-xxxhdpi/msg_bubble_outgoing.9.png b/vector/src/main/res/drawable-xxxhdpi/msg_bubble_outgoing.9.png new file mode 100644 index 0000000000..cfd5734f10 Binary files /dev/null and b/vector/src/main/res/drawable-xxxhdpi/msg_bubble_outgoing.9.png differ diff --git a/vector/src/main/res/layout/item_timeline_event_base.xml b/vector/src/main/res/layout/item_timeline_event_base.xml index 05d0dd797e..2ddf642d16 100644 --- a/vector/src/main/res/layout/item_timeline_event_base.xml +++ b/vector/src/main/res/layout/item_timeline_event_base.xml @@ -23,6 +23,14 @@ android:layout_marginTop="4dp" tools:src="@tools:sample/avatars" /> + + +