如何指定下拉式微调框的高度?

时间:2019-05-06 17:12:11

标签: android android-spinner

我有一个微调器,它有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 :(得分:0)

对于下拉菜单中的单个项目, 您可以按如下所示指定高度。

@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();
    }