17

我有一个使用 ArrayAdapter 由字符串列表填充的 android 微调器,它运行良好,但是由于微调器的显示方式,我遇到了列表项的显示高度问题。

乍一看,ArrayAdapter 似乎可以使用单一布局来显示选项,这会导致我遇到的问题。当在微调器中显示当前项目时(当用户没有从列表中选择新项目时)微调器会填充文本,以便微调器的大小适合单击。但是,当用户点击它并调出列表以选择新项目时,所显示的列表项目在高度方面太小了。如果我使用的项目布局以合理的高度显示列表项,那么由于列表项自身的填充,微调器本身会变得异常巨大。

关于如何管理这两种项目显示模式的高度的任何想法,以便它们有效地以相同的高度值显示,而不是微调器高度大于列表项显示高度?

4

2 回答 2

44

前段时间我自己也遇到过这个问题,结果我需要使用不同的布局进行下拉和显示

我有这个代码:

adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cGroups,
                new String[] {
                        "name", "_id"
                }, new int[] {
                    android.R.id.text1
                });
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
于 2010-06-13T19:33:22.403 回答
13

是的,上面的答案是正确的。

我花了很长时间才找到这个,因为它在 2.2 Android 的 sdk 示例中是错误的。我很难接受这一点。

这是来自 samples/android-12/Spinner/src/com/android/example/spinner/SpinnerActivity.java 的片段:

       this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
                android.R.layout.simple_spinner_dropdown_item);

而它应该在android.R.layout.simple_spinner_item那里,并且simple_spinner_dropdown_item应该只用于下拉项目。否则,微调器箭头会被拉伸,并且它也会在显示屏上绘制下拉选择圆。

于 2011-05-31T21:34:18.027 回答