Android布局(四)spinner

一、用法

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

原文地址:https://www.cnblogs.com/wyqfighting/p/3076105.html