【问题标题】:Android spinner prompt text not showing [duplicate]Android微调器提示文本未显示[重复]
【发布时间】:2011-11-29 18:09:38
【问题描述】:

显示数据数组的第一年,而不是微调器中提示的文本。我尝试在 XML 中添加提示,但我也尝试从代码中。此外,在添加 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 的一部分。
  • 来自本教程。 gersic.com/blog.php?id=57
  • 那就不要相信教程了。 spinnerSelector 似乎不在 SDK 中。

标签: android


【解决方案1】:

也许您看到微调器下拉项目作为列表没有任何提示文本。微调器显示项目有两种模式,下拉对话框

将此属性作为 XML 属性添加到您的微调器:

android:spinnerMode="dialog"

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

【讨论】:

  • 有见地,如果列表太长,对话框选项会自动处理滚动吗?
  • 是的,它由微调对话框处理。
  • 下拉菜单可以不设置提示吗?
【解决方案2】:

你必须在之后设置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!)

【讨论】:

    【解决方案3】:

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

    尝试在您的代码中查找错误,或在某个时候调用 Spinner.getPrompt 并将其打印到日志中,以查找您从何处获得无效标题。

    【讨论】:

    • 在 spinner.setAdapter(adapter) 之后记录 getPrompt 的值;它在 LogCat 中显示正确的字符串。
    • 所以尝试使用调试器 - 进入 Spinner.java(假设您下载 Android 源代码),并在 builder.setTitle(mPrompt) 中使用时查看 mPrompt 变量中的内容;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多