Spinner 和 ArrayAdapter 的用法

如果想获得Spinner选择 的名称,用 String数组中 的[arg2]就行了。这个刚开始没想到。整理了好长时间才转过来怎样获得 Spinner 选择后的名称


1.     在资源文件 (strings.xml) 中,增加:

         < string name = "spin_prompt" > 请选择城市 </ string >

         < string-array name = "cities" >

                   < item > 北京 </ item >

                   < item > 上海 </ item >

                   < item > 南京 </ item >

                   < item > 乌鲁木齐 </ item >

                   < item > 哈尔滨 </ item >

                   < item > 符拉迪沃斯托克 </ item >

         </ string-array >

 

2.     在布局文件 (main.xml) 中,增加:

         < Spinner

                   android:id = "@+id/Spinner01"

                   android:layout_width = "wrap_content"

                   android:layout_height = "wrap_content"

                   android:entries = "@array/cities"

                   android:prompt = "@string/spin_prompt"

         />

         注意: android:prompt 必须要引用 strings.xml 中资源 ID ,而不能在这里直接用 raw text 。

 

         运行结果:


 

 

点击Spinner右边的带倒三角的按钮,即出现各城市选项如下:

 


用法 2 :以代码方式,动态展示 Spinner 选项

1.     在资源文件 strings.xml 中,无需定义任何资源。

2.     在布局文件 (main.xml) 中, Spinner 的描述为:

         < Spinner

                   android:id = "@+id/Spinner01"

                   android:layout_width = "wrap_content"

                  android:layout_height = "wrap_content"

         />

3.     在 Activity 对应的代码中做相关修改,使之如下:

public class ControlSpinner extends Activity

{

                   private static final String tag = "ControlSpinner" ;

                   private static final String[] cities =

                            { " 上海 " , " 北京 " , " 南京 " , " 哈尔滨 " , " 乌鲁木齐 " , " 符拉迪沃斯托克 " , " 圣弗朗西斯科 " };
 
               private Spinner spinner ;

               @Override

               public void onCreate(Bundle savedInstanceState)

               {

                    super .onCreate(savedInstanceState);

                    setContentView(R.layout. main );

 

                    ArrayAdapter adapter = new ArrayAdapter( this , android.R.layout. simple_spinner_item , cities );
 
//      ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item);
 
//      adapter.add(" 上海 ");

//      adapter.add(" 北京 ");

//      adapter.add(" 南京 ");

//      adapter.add(" 哈尔滨 ");

//      adapter.add(" 乌鲁木齐 ");

//      adapter.add(" 符拉迪沃斯托克 ");

//      adapter.add(" 圣弗朗西斯科 ");

                    adapter.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item );
 
                    spinner = (Spinner) this .findViewById(R.id. Spinner01 );

           spinner .setAdapter(adapter);

                    spinner .setPrompt( " 请选择城市 : " );

               }

                   … …

         }

         运行效果和用法 1 相同。

 

         注意:

1.     被注释的代码可以代替

private static final String[] cities = { " 上海 " , " 北京 " , " 南京 " , " 哈尔滨 " , " 乌鲁木齐 " , " 符拉迪沃斯托克 " , " 圣弗朗西斯科 " };
 

ArrayAdapter adapter = new ArrayAdapter( this , android.R.layout. simple_spinner_item , cities );
 
两条语句的组合。

2.     ArrayAdapter 构造函数中的第二个参数是 android.R.layout. simple_spinner_item , adapter.setDropDownViewResource 中的参数则是 android.R.layout. simple_spinner_dropdown_item 。它们是不一样的。
 
 

 

用法 3 :混合方式

1.     在资源文件 (strings.xml) 中,相关的资源描述为:

 

2.     在布局文件 (main.xml) 中, Spinner 的描述为:

         < Spinner

                   android:id = "@+id/Spinner01"

                   android:layout_width = "wrap_content"

                   android:layout_height = "wrap_content"

         />

3.     在 Activity 对应的代码中做相关修改,使之如下:

public class ControlSpinner extends Activity

{

               private Spinner spinner ;

               @Override

               public void onCreate(Bundle savedInstanceState)

               {

                    super .onCreate(savedInstanceState);

                    setContentView(R.layout. main );

 

                    ArrayAdapter adapter = ArrayAdapter.createFromResource ( this ,

                             R.array. cities ,

                             android.R.layout. simple_spinner_item );

                    adapter.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item );
 
                    spinner = (Spinner) this .findViewById(R.id. Spinner01 );

                    spinner .setAdapter(adapter);

                    spinner .setPrompt( " 请选择城市: " );

               }

                   … …

         }

运行效果与方法 1 也一样。

 

注意:

1.     ArrayAdapter adapter 中的模板参数必须为 CharSequence

2.     createFromResource 的第二个参数 R.array.cities 就是在 strings.xml 中定义的资源

 

 

用法 4 :改变 Spinner 对象本身的大小,及其文字的大小和颜色

1.     在布局文件 (main.xml) 中,修改 Spinner 对象的描述如下:

         < Spinner

                   android:id = "@+id/Spinner01"

                   android:layout_width = "160px"

                   android:layout_height = "40px"

         />

这使得 Spinner01 的宽度为 160 个像素,高度为 40 个像素。

2.     创建一个布局文件 spinnerLayout.xml ,使之如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值