在选择项之前设置下拉框的文本

8

我有一个包含三个选项的下拉列表,使用XML string-array资源进行填充。当您打开一个活动时,下拉列表通常会显示数组列表中的第一项。我想更改它并在选择项目之前在下拉列表中显示文本“Select one”。

我该如何做到这一点?


2个回答

10
你可以有两种方法来实现这个目标:
1)在你的xml中加入“Select One”作为第一项,并编写监听器来忽略它作为选择。
2)创建一个自定义适配器将其插入到第一行中。 编辑: 在你的资源文件中进行操作。
<string-array name="listarray">
    <item>Select One</item>
    <item>Item One</item>
    <item>Item Two</item>
    <item>Item Three</item>
</string-array>

在您的onItemSelected监听器中:

spinnername.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
    public void onNothingSelected(AdapterView<?> parent) {
    }
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        if (pos == 0) {
        }else {
            // Your code to process the selection
        }
    }
});

有没有一种方法可以从字符串资源中插入它? - JohnD
是的,只需将其添加为数组资源中的第一个条目即可。我编辑了我的答案以提供一个示例。 - Barak
1
+1,好的技巧,但如果我们能够从选择一个项目中删除单选按钮,那就更好了。 - Sahil Mahajan Mj
@SahilMahajanMj,不在下拉菜单中显示它怎么样?请查看此答案以了解如何实现。 - Barak

1
要为Spinner设置默认文本,您需要在Spinner中使用android:prompt=@string/SelectOne,其中SelectOne在您的string.xml文件中定义。
例如:
<Spinner android:id="@+id/spinnerTest"  
 android:layout_marginLeft="50px"
 android:layout_width="fill_parent"                  
 android:drawSelectorOnTop="true"
 android:layout_marginTop="5dip"
 android:prompt="@string/SelectOne"
 android:layout_marginRight="30px"
 android:layout_height="35px" 
/> 

不是 OP 想要的。他想要它在下拉菜单中,而不是作为其标题。 - Barak
1
请查看此帖子,它提供了多种实现你想要的功能的方法。https://dev59.com/CHNA5IYBdhLWcg3wrf83 - 113408

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