Make sure this uses the same logic as spinner.
There were fixes to determining the horizontal offset of the dropdown
view for spinners in fwk:
https://android-git.corp.google.com/g/#/c/128373/1
Since MultiAdapterSpinner doesn't use a spinner, we have to copy this logic.
Fixes b/5165079 account spinner dropdown padding / dropdown position off
Change-Id: Ifa0dfc319db65d36c6e0317cfbd10954e7ae16db
diff --git a/java/com/android/mailcommon/MultiAdapterSpinner.java b/java/com/android/mailcommon/MultiAdapterSpinner.java
index 85a67f0..cd58f3e 100644
--- a/java/com/android/mailcommon/MultiAdapterSpinner.java
+++ b/java/com/android/mailcommon/MultiAdapterSpinner.java
@@ -22,6 +22,8 @@
import com.android.mailcommon.MergedAdapter.LocalAdapterPosition;
import android.content.Context;
+import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
@@ -57,6 +59,7 @@
protected ListPopupWindow mPopup;
private int mSelectedPosition = -1;
+ private Rect mTempRect = new Rect();
/**
* A basic adapter with some callbacks added so clients can be involved in spinner behavior.
@@ -142,6 +145,14 @@
mAdapter.getSubAdapter(i).onShowPopup();
}
+ final int spinnerPaddingLeft = getPaddingLeft();
+ final Drawable background = mPopup.getBackground();
+ int bgOffset = 0;
+ if (background != null) {
+ background.getPadding(mTempRect);
+ bgOffset = -mTempRect.left;
+ }
+ mPopup.setHorizontalOffset(bgOffset + spinnerPaddingLeft);
mPopup.show();
mPopup.getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
mPopup.setSelection(mSelectedPosition);