Android下拉框高度无法自适应内容的解决方法

3

我已经创建了一个带有下拉菜单的旋转器,并使用自定义数组适配器填充下拉菜单。 但是问题是,即使下拉菜单只有两行,它的高度也会占满整个屏幕。

我尝试过设置高度,但没有效果。有什么想法吗?

<Spinner
    android:id="@+id/sample"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="0.7"
    android:background="@drawable/spinner"
    android:dropDownWidth="618dp"
    android:dropDownHeight="468dp"
</Spinner>

编辑:我找到了问题所在。原因是sample_dialog是一个相对布局。如果我将其更改为线性布局,它就可以正常工作。但为什么不能使用相对布局?

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
   View view = inflater.inflate(R.layout.sample_dialog, null);
}

3
这个是在垂直的LinearLayout里吗?请发布你xml文件的其余部分。 - u3l
请将您的屏幕截图与整个布局代码一起发布。 - GrIsHu
它是在水平线性布局中。 - user584263
1个回答

1
在你的活动中使用我的函数:

dimens.xml:

<dimen name="my_dimen">140dp</dimen>

我的活动:

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

            // Get private mPopup member variable and try cast to ListPopupWindow
            android.widget.ListPopupWindow popupWindow = (android.widget.ListPopupWindow) popup.get(spinner);

            // Set popupWindow height to 140dp


            int altoSpinner = (int) getResources().getDimension(R.dimen.my_dimen);
                popupWindow.setHeight(altoSpinner);


        } catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) {
            // silently fail...
        }
    }

My_spinner.setAdapter(adapterData);

SpinnerHeight(My_spinner);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接