转载注明出处: http://blog.csdn.net/eana_don/article/details/8285174
参考资料:《疯狂Android讲义》,官网API
下拉框是一种提供用户多种选择的控件。当不需要用户输入需要用户选择并且可选择项较多时,就可以采用下拉框。而Android里面的下拉框与一般网页上的下拉框及JAVA图形界面的下拉框在展现上不一样,一般网页上的下拉框是点击之后下拉菜单,而在Android则是点击之后弹出菜单提供选择。所以一般下拉框的样式默认都是弹出式的列表,列表项都带一个单选框。当然,下拉框的样式都是可以自定义的。下拉框的数据来源可以是Adapter,可以是数组,也可以是定义好的资源文件比如array.xml。
一、使用定义好的资源文件作为下拉框的数据来源,使用默认样式。
1.xml资源文件
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>America</item> <item>China</item> <item>Japan</item> <item>Korea</item> <item>England</item> </string-array> </resources>
2.布局文件写法
<Spinner android:id="@+id/spinner_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/countries_array" />
3.代码控制:监听数据改变结果
spinner_1 = (Spinner) findViewById(R.id.spinner_1); spinner_1.setOnItemSelectedListener(this); //类本身实现接口OnItemSelectedListener @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub System.out.println("您选中的项为:" + arg2); }
4.结果
![]()
二、使用Adapter作为下拉框的数据来源,使用自定义样式。
1.布局文件写法
<Spinner android:id="@+id/spinner_2" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Spinner android:id="@+id/spinner_3" android:layout_width="fill_parent" android:layout_height="wrap_content" />
2.代码控制:设置Adapter
spinner_2 = (Spinner) findViewById(R.id.spinner_2); spinner_3 = (Spinner) findViewById(R.id.spinner_3); BaseAdapter ba_2 = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView text = new TextView(SpinnerActivity.this); text.setText(position+""); text.setTextSize(20); return text; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return 10; } }; spinner_2.setAdapter(ba_2); //自定义的Spinnner BaseAdapter ba_3 = new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LinearLayout line = new LinearLayout(SpinnerActivity.this); line.setOrientation(0); ImageView icon = new ImageView(SpinnerActivity.this); icon.setImageResource(R.drawable.contact); TextView text = new TextView(SpinnerActivity.this); text.setText(position+""); text.setTextSize(20); line.addView(icon); line.addView(text); return line; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return 10; } }; spinner_3.setAdapter(ba_3);
3.结果
![]()
![]()
06 - 基本控件:Spinner下拉框
最新推荐文章于 2022-05-19 20:32:07 发布