Merge "Fix the pointer position when displayed in RTL" into tm-dev am: 91d28d1b21 am: 533d85f39d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18620988

Change-Id: Ifd37de6b6b5f4872b801078e055536de5fdd6711
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Mady Mellor
2022-05-31 15:29:13 +00:00
committed by Automerger Merge Worker

View File

@@ -706,6 +706,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)
@@ -732,12 +734,22 @@ public class BubbleExpandedView extends LinearLayout {
float pointerX;
if (showVertically) {
pointerY = bubbleCenter - (mPointerWidth / 2f);
pointerX = onLeft
? -mPointerHeight + mPointerOverlap
: getWidth() - mPaddingRight - mPointerOverlap;
if (!isRtl) {
pointerX = onLeft
? -mPointerHeight + mPointerOverlap
: getWidth() - mPaddingRight - mPointerOverlap;
} else {
pointerX = onLeft
? -(getWidth() - mPaddingLeft - mPointerOverlap)
: mPointerHeight - mPointerOverlap;
}
} else {
pointerY = mPointerOverlap;
pointerX = bubbleCenter - (mPointerWidth / 2f);
if (!isRtl) {
pointerX = bubbleCenter - (mPointerWidth / 2f);
} else {
pointerX = -(getWidth() - mPaddingLeft - bubbleCenter) + (mPointerWidth / 2f);
}
}
if (animate) {
mPointerView.animate().translationX(pointerX).translationY(pointerY).start();