在 android 中为 RTL 和 LTR 语言环境设计聊天气泡

Designing a chat bubble for RTL and LTR locales in android

我正在尝试为 android 使用 "Actor" Open Source Messenger 应用程序,但它在显示 RTL 语言的聊天气泡时存在错误。提供英文文本和 RTL 语言文本显示的气泡 here

我希望它像 this 一样,就像在 "Whatsapp".

这样的 Messenger 中一样

这是气泡视图的 xml 文件:

<im.actor.sdk.controllers.conversation.view.BubbleContainer xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true">

<im.actor.sdk.controllers.conversation.view.BubbleTextContainer
    android:id="@+id/fl_bubble"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:duplicateParentState="true">

    <TextView
        android:id="@+id/tv_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|left"
        android:includeFontPadding="false"
        android:textSize="15sp" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_marginBottom="-4dp"
        android:layout_marginRight="-4dp"
        android:baselineAligned="false"
        android:gravity="center_vertical"
        android:paddingLeft="4dp">

        <TextView
            android:id="@+id/tv_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:includeFontPadding="false"
            android:textSize="13sp" />

        <im.actor.sdk.view.TintImageView
            android:id="@+id/stateIcon"
            android:layout_width="16dp"
            android:layout_height="9dp"
            android:layout_marginLeft="2dp" />
    </LinearLayout>

</im.actor.sdk.controllers.conversation.view.BubbleTextContainer>

我尝试将 "left" 和 "right" 重力参数更改为 "start" 和 "end" 但没有成功。

我该如何修改这个布局文件?

确保您已将清单中的应用程序标记的 rtlSupport 设置为 true。

这些气泡测量是在 "BubbleTextContainer" class 中完成的。 你应该在那里做一些改变。看到代码,我想你就明白了。更具体地说,在onMeasure方法中有fullContentHfullContentW两个变量。根据您的需要在那里更改它们。