Merge "Fix the pointer position when displayed in RTL"

This commit is contained in:
Mady Mellor
2022-05-27 17:12:27 +00:00
committed by Android (Google) Code Review

View File

@@ -908,6 +908,8 @@ public class BubbleExpandedView extends LinearLayout {
* @param animate whether the pointer should animate to this position.
*/
public void setPointerPosition(float bubblePosition, boolean onLeft, boolean animate) {
final boolean isRtl = mContext.getResources().getConfiguration().getLayoutDirection()
== LAYOUT_DIRECTION_RTL;
// Pointer gets drawn in the padding
final boolean showVertically = mPositioner.showBubblesVertically();
final float paddingLeft = (showVertically && onLeft)
@@ -932,12 +934,23 @@ public class BubbleExpandedView extends LinearLayout {
updatePointerView();
if (showVertically) {
mPointerPos.y = bubbleCenter - (mPointerWidth / 2f);
mPointerPos.x = onLeft
? -mPointerHeight + mPointerOverlap
: getWidth() - mPaddingRight - mPointerOverlap;
if (!isRtl) {
mPointerPos.x = onLeft
? -mPointerHeight + mPointerOverlap
: getWidth() - mPaddingRight - mPointerOverlap;
} else {
mPointerPos.x = onLeft
? -(getWidth() - mPaddingLeft - mPointerOverlap)
: mPointerHeight - mPointerOverlap;
}
} else {
mPointerPos.y = mPointerOverlap;
mPointerPos.x = bubbleCenter - (mPointerWidth / 2f);
if (!isRtl) {
mPointerPos.x = bubbleCenter - (mPointerWidth / 2f);
} else {
mPointerPos.x = -(getWidth() - mPaddingLeft - bubbleCenter)
+ (mPointerWidth / 2f);
}
}
if (animate) {
mPointerView.animate().translationX(mPointerPos.x).translationY(