安卓下拉框提示文本未显示

13

我的spinner中显示的是数据数组中的第一个年份,而不是来自prompt的文本。我尝试在XML中添加prompt,但也尝试了从代码中添加。此外,在添加spinnerSelector属性时它给了我一个“资源未找到错误”。

XML

<Spinner
    android:id="@+id/spinnerYear"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:drawSelectorOnTop="true"
    android:padding="5dip"
    android:prompt="@string/spinner_header"
    android:background="@drawable/selector_yearspinnerback"
    android:layout_below="@+id/linearLayout_gender_btns"
    android:layout_centerHorizontal="true"></Spinner>
  -- android:spinnerSelector="@drawable/category_arrow"

代码

ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
    yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

你从哪里得到了android:spinnerSelector?它不是公共SDK的一部分。 - Pointer Null
从这个教程开始。http://www.gersic.com/blog.php?id=57 - Crunch
不要相信教程。spinnerSelector似乎不在SDK中。 - Pointer Null
3个回答

42

也许您会看到Spinner作为列表下拉显示而没有任何提示文本。Spinner有两种模式来显示其项,dropdowndialog

将此属性作为XML属性添加到您的Spinner中:

android:spinnerMode="dialog"

现在您将会在弹出式对话框选择列表中获取项目,而不是下拉列表。


深入一点,如果列表太长,对话框选项是否会自动处理滚动? - t3dodson
是的,它由旋转对话框处理。 - james
1
我们不能设置下拉菜单的提示吗? - h8pathak

1

在此之后,您必须设置adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adapter);

因此,修正后的代码应该是:

ArrayList<String> yearList = new ArrayList<String>();
int now = new Date().getYear() + 1900;
for (int i = now; i > now - 110; i--) {
    yearList.add(i + "");
}
Spinner spinner = (Spinner) findViewById(R.id.spinnerYear);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, yearList);
spinner.setAdapter(adapter);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

希望它对你的效果和我一样好:D!


0

对我来说,android:prompt XML属性和Spinner.setPrompt都可以使用,并且列表选择器会显示正确的标题。

尝试在您的代码中查找错误,或者在某个时刻调用Spinner.getPrompt并将其打印到日志中,以找出无效标题的来源。


在 spinner.setAdapter(adapter); 之后记录了 getPrompt 的值,并且在 LogCat 中显示了正确的字符串。 - Crunch
尝试使用调试器 - 进入Spinner.java(假设您已下载Android源代码),并查看在builder.setTitle(mPrompt)中使用mPrompt变量时其中包含的内容。 - Pointer Null

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