一、用法
private static final String[] channalnum = {"自动获取","1","4","8","16","32"}; mSpn=(Spinner)findViewById(R.id.channalspinner); mApt = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,channalnum); mSpn.setAdapter(mApt); mSpn.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { pos=position; } @Override public void onNothingSelected(AdapterView<?> arg0) { } });
spinner没有TextView类,没有setText方法,如果要让spinner显示某一项,则要用mSpn.setSelection(int postion);
比如:在代码中,固定要求刚进来时选择某项,用mSpn.setSelection(4);在本例中,设置4,则默认显示16;若不设置,默认显示第一个,即“自动获取”。
效果如下
图一 simple_spinner_dropdown_item 图二 simple_spinner_item
二、显示
spinner下拉列表有两种显示方式,分别是android.R.layout.simple_spinner_dropdown_item(如上)以及simple_spinner_item。
我们一般常用simple_spinner_dropdown_item,因为很显然它的展开框更漂亮一点。但是怎么去掉它默认显示时,即“自动获取”中那个丑丑的圆圈了?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、去掉圈圈
其实,我们在设置mApt = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,channalnum)时,第二个参数表示spinner没有展开前的UI类型 。
而spinner展开后的类型,其实是Adapter的显示类型。我们可以再设置mApt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)。这样既可。
显示部分的完整代码:
1 mSpn=(Spinner)findViewById(R.id.channalspinner); 2 //第二个参数为spinner未展开时的UI显示 3 mApt = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,channalnum); 4 //设置Adapter,其实也是此spinner展开时的UI显示 5 mApt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 6 //设置展开框的首部提示信息 7 mSpn.setPrompt("请选择通道数"); 8 mSpn.setAdapter(mApt);
效果图:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ps:ArrayAdapter还有另外一种构造方式:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_arry, android.R.layout.simple_spinner_item);
R.array.planets_arry是在xml文件里写死的,
在strings.xml中
<resources> <string name="planet_prompt">太阳系行星:</string> <string-array name="planets_arry"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四、提示头加图标
效果:
在网上查了下,没找到有人专门要加这个图标的,那么就应该是系统自带的,那么为什么我的没显示了?呜呜,照着别人的全都在xml里面写,可是还是没有。我也不知道是为什么?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------五、选项中,既有文字,又有图像的
效果图:
别的没有什么不一样,但很明显adapter要最自己写,不能用ArrayAdapter了,要继承BaseAdapter。
具体可参考http://blog.csdn.net/pathuang68/article/details/6404461。