为什么我的Android Spinner在TextView中显示了单选按钮?

7
我有一个使用ArrayAdapter动态管理的Spinner。当它被显示时,Spinner文本也会显示单选按钮。我该如何去掉这个单选按钮?下拉箭头也很难看...这是我的问题。
注意:我不是在说选择Spinner下拉列表时出现的那些单选按钮。
以下是适当的代码片段...几点说明:
- 这段代码位于Widget构造函数中,Widget是Spinner的子类。 - value是Object实例的数组(在创建Widget时传递)。 - 没有XML资源;所有小部件都是动态创建的。 - 我认为我需要"操作"提示,在构造函数和onitemclicked事件监听器中添加了setPrompt(...),但没有效果。
问:我错过了什么?对我来说,似乎我错过了Spinner的某些属性,导致单选按钮也显示在Spinner的文本部分。
-- 代码片段 --
public class ChoiceGroupImpl extends Spinner implements OnItemSelectedListener {
    public ChoiceGroupImpl(Activity activity, WidgetContainer container, Value widget, AttributeImpl attributes, Object[] value, int selected) {
...
        adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_dropdown_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        for (int i = 0; i < value.length; i++)
            adapter.add(value[i].toString());
        if (attributes.isReadonly())
            setEnabled(false);
        setAdapter(adapter);
        setSelection(selected);
        setPrompt(adapter.getItem(selected));
        setOnItemSelectedListener(this);
...
}
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        setPrompt(adapter.getItem(position));
        ((ToolkitImpl) Toolkit.getInstance()).hiddenCommand(container, "SelectionChanged");
    }
...

-- 结束剪切代码 --

哦!顺便说一下:我没有覆盖任何视图布局、绘制方法。 - Sheshadri Mantha
2个回答

17
如果你想让单选按钮保留在下拉菜单中,但不要出现在文本视图中,请按照以下步骤操作:
adapter = new ArrayAdapter<CharSequence>(activity, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

1
这是我认为更完整的解决方案。 - Ken
这个解决方案的问题是在点击高亮期间复选框可见。 - Florian Barth

14
使用 simple_spinner_item 而不是 simple_spinner_dropdown_item 来创建你的适配器。
adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_item);

1
啊!搞定了!看起来很简单,难怪我错过了它!谢谢。 - Sheshadri Mantha

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