Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73beee23 authored by Romain Guy's avatar Romain Guy
Browse files

Measure AutoCompleteTextView's dropdown to have enough room for all items.

Bug #2363514
parent 3c79a4ab
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -1331,7 +1331,6 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
        final int maxHeight = mPopup.getMaxAvailableHeight(
                getDropDownAnchorView(), mDropDownVerticalOffset, ignoreBottomDecorations);

        if (mDropDownAlwaysVisible || mDropDownHeight == ViewGroup.LayoutParams.MATCH_PARENT) {
        // getMaxAvailableHeight() subtracts the padding, so we put it back,
        // to get the available height for the whole window
        int padding = 0;
@@ -1340,11 +1339,18 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
            background.getPadding(mTempRect);
            padding = mTempRect.top + mTempRect.bottom;
        }

        if (mDropDownAlwaysVisible || mDropDownHeight == ViewGroup.LayoutParams.MATCH_PARENT) {
            return maxHeight + padding;
        }

        return mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED,
                0, ListView.NO_POSITION, maxHeight - otherHeights, 2) + otherHeights;
        final int listContent = mDropDownList.measureHeightOfChildren(MeasureSpec.UNSPECIFIED,
                0, ListView.NO_POSITION, maxHeight - otherHeights, 2);
        // add padding only if the list has items in it, that way we don't show
        // the popup if it is not needed
        if (listContent > 0) otherHeights += padding;

        return listContent + otherHeights;
    }

    private View getHintView(Context context) {