在 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方法中有fullContentH和fullContentW两个变量。根据您的需要在那里更改它们。
我正在尝试为 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方法中有fullContentH和fullContentW两个变量。根据您的需要在那里更改它们。