morristech
1/17/2019 - 11:31 PM

Fix for Spinner.getBaseline returning wrong value on Android 5.1 (maybe 5.0+) in some cases

Fix for Spinner.getBaseline returning wrong value on Android 5.1 (maybe 5.0+) in some cases

public class SpinnerWithBaseline extends Spinner {

	public SpinnerWithBaseline(Context context, AttributeSet attr) {
		super(context, attr);
	}

	@Override
	public int getBaseline() {
		final int children = getChildCount();
		int childBaseline = 0;

		if (children > 0) {
			View child = getChildAt(0);
			if (child != null) {
				childBaseline = child.getBaseline();
				if (childBaseline >= 0) {
					final Drawable dr = getBackground();
					if (dr != null) {
						final Rect rect = new Rect();
						dr.getPadding(rect);
						childBaseline += rect.top;
					}
					return childBaseline;
				}
			}
		}

		final int superBaseline = super.getBaseline();
		return superBaseline;
	}
}