Как указать высоту выпадающего Spinner? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть блесна, и в ней 13 предметов. При нажатии я хочу показать выпадающий список высотой 100dp (не высота отдельного элемента), и его нужно прокручивать по вертикали. Так что покажу 3-4 пункта. Я хочу какой-нибудь вид с прокруткой, но высота переходит в нижнюю часть экрана.

вот что я попробовал:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Spinner
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="100dp"
            android:id="@+id/cycle_spinner"
            android:background="@color/myoffwhite"
            android:popupBackground="@color/myoffwhite"
            android:scrollbars="vertical">
        </Spinner>
        <Spinner
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="100dp"
            android:id="@+id/day_spinner"
            android:background="@color/myoffwhite"
            android:popupBackground="@color/myoffwhite"
            android:scrollbars="vertical">
        </Spinner>
</LinearLayout>

1 Ответ

0 голосов
/ 06 мая 2019

Для отдельного элемента в раскрывающемся меню Вы можете указать высоту путем переопределения, как показано ниже.

@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View view = super.getDropDownView(position, convertView, parent);
    view.getLayoutParams().height = [specify height here];
    return view;
}

Размер самого выпадающего меню: Вы можете использовать ниже.

spinner = (Spinner)findViewById(R.id.spinner);

    try {
        Field popup = Spinner.class.getDeclaredField("mPopup");
        popup.setAccessible(true);

        ListPopupWindow window = (ListPopupWindow)popup.get(spinner);
        window.setHeight(123); // in pixel, replace with your size
    } catch (Exception e) {
        e.printStackTrace();
    }
...