我有一个使用ArrayAdapter填充的字符串列表的android微调器,它运行正常,但由于微调器的显示方式,我遇到列表项的显示高度问题。
乍一看,似乎ArrayAdapter可以使用单一布局来显示导致我遇到的问题的选项。在微调器中显示当前项目时(当用户没有从列表中选择新项目时),微调器会填充文本,以便微调器的大小合理。然而,当用户点击它并调出列表以选择新项目时,所呈现的列表项目在高度方面是小的。如果我使用一个项目布局将列表项目显示在合理的高度,那么由于它自己填充列表项,微调器本身变得过于庞大。
关于如何管理这两个项目显示模式的高度的任何想法,以便有效地显示相同的高度值而不是微调器高度大于列表项目显示高度?
答案 0 :(得分: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);
答案 1 :(得分:13)
是的,上面的答案是正确的。
我花了很长时间才找到这个,因为它在2.2 Android的sdk示例中是错误的。我很难接受这个。
这是一段摘录 样本/机器人-12 /微调/ SRC / COM /机器人/示例/微调/ 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
只应该用于下拉项目。否则,微调器箭头会拉伸,并将下拉选择圆圈绘制到显示器上。