下拉列表框也是一种常见的图形组件,它可以为用户提供列表的选则方式,与复选框或单选钮相比还可以节省手机的屏幕空间,在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;//初始化Spinner private 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的使用