下拉列表框也是一种常见的图形组件,它可以为用户提供列表的选则方式,与复选框或单选钮相比还可以节省手机的屏幕空间,在Android中可以使用android.widget.Spinner类实现,此类定义如下:
java.lang.Object
? android.view.View
? android.view.ViewGroup
? android.widget.AdapterView<T extends android.widget.Adapter>
? android.widget.AbsSpinner
? android.widget.Spinner
No. | 方法 | 类型 | 描述 |
1 | public CharSequence getPrompt () | 普通 | 取得提示文字 |
2 | public void setPrompt (CharSequence prompt) | 普通 | 设置组件的提示文字 |
3 | public void setAdapter (SpinnerAdapter adapter) | 普通 | 设置下拉列表项 |
4 | public void setOnItemClickListener( AdapterView.OnItemClickListener l) | 普通 | 设置选项单击事件 |
…………………………………………………………毫无美感的分割线…………………………………………………………
配置Strings.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Hewwlo World</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string-array name="city_name"> <item >河南</item> <item >北京</item> <item >上海</item> </string-array> <string name="city_info">请选择您的城市</string></resources>
在Android中,可以直接在main.xml文件中定义“<Spinner>”节点,但是在定义此元素的时候却不能直接设置其显示的列表项,关于下拉列表框中的列表项有以下两种方式进行配置:
方式一:直接通过资源文件配置;
方式二:通过android.widget.ArrayAdapter类读取资源文件或者是指定具体设置的数据;
接下来先看
第一种。
这个时候定义的是一个“string-array”的根节点,表示里面配置的是一个数组的集合,而里面的每一个“<item>”节点表示的就是每一个列表项的内容,随后在layout/main.xml文件定义“<Spinner>”节点的时候直接使用“android:entries="@array/city_labels"”属性就可以读取信息了。
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/info_city" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择您喜欢的城市:" /> <Spinner android:id="@+id/mycity" android:layout_width="fill_parent" android:layout_height="wrap_content" android:entries="@array/city_name"//设置下拉列表 android:prompt="@string/city_info" />//设置提示文字</LinearLayout>
运行程序
这种方式配置简单操作也不错,但是在开发的灵活性上有一定的局限性。
…………………………………………………………毫无美感的分割线…………………………………………………………
第二种方式
布局文件
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/info_city" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="请选择您喜欢的城市:" /> <Spinner android:id="@+id/mycity" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
JAVA文件
package com.example.hewwloworld;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {private Spinner city=null;//初始化Spinnerprivate ArrayAdapter<CharSequence> adaptercity=null;//初始化ArrayAdapter @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); this.city=(Spinner)super.findViewById(R.id.mycity);//取得组件 this.city.setPrompt("请选择您的城市");//设置提示文字 this.adaptercity=ArrayAdapter.createFromResource(this, R.array.city_name, android.R.layout.simple_spinner_item);//设置下拉选项及下拉列表格式 this.adaptercity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置按下选项列表格式this.city.setAdapter(adaptercity);//配置adapter}}
效果和第一种方式是一样的。
当然通过集合配置也是可以完成同样的功能。
package com.example.hewwloworld;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {private Spinner city=null;private List<CharSequence> city_name=null;private ArrayAdapter<CharSequence> adaptercity=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); this.city=(Spinner)super.findViewById(R.id.mycity); this.city_name=new ArrayList<CharSequence>(); city_name.add("河南"); city_name.add("上海"); city_name.add("北京"); this.city.setPrompt("请选择您的家乡"); this.adaptercity=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item,city_name); this.adaptercity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); this.city.setAdapter(adaptercity); this.city.setAdapter(adaptercity); }}
Spinner的使用比前面的稍微多了一点东西,不过大家好好看看句都能看懂。
下节预报:ImageView和ImageButton的使用