Android提供实现下拉框功能的非常实用的控件Spinner。

  spinner控件需要向xml资源文件中添加spinner标签,如下:

    <Spinner        android:id="@+id/spinner1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_toRightOf="@+id/textView1"        android:layout_centerHorizontal="true" />    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBottom="@+id/spinner1"        android:layout_alignParentLeft="true"        android:layout_marginBottom="20dp"        android:layout_marginLeft="16dp"        android:textSize="20sp"        android:text="所选城市" />

  添加完资源控件后,在activity中,添加代码:

package com.example.android_spinner2;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {    private Spinner spinner ;    private ArrayAdapter adapter ;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        this.spinner =(Spinner) this.findViewById(R.id.spinner1);        //两种方式给下拉列表注册适配器        //1 :new 适配器对象(content对象,样式ID,数据集合)        adapter = new ArrayAdapter<String>(this,                 android.R.layout.simple_spinner_dropdown_item, getDataSource());        spinner.setAdapter(adapter);    }    public List<String> getDataSource(){        List<String> list = new ArrayList<String>() ;        list.add("北京");        list.add("上海");        list.add("广州");        list.add("长沙");        return list  ;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}
在模拟其中运行,将得到spinner的显示效果:

  从官方的API可知,官方提供另外一种为spiner注册适配器的方式。示例代码如下:

package com.example.android_spinner2;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.widget.Toast;/**
*为实现item选择后的提供监听效果,spinner所在的activity可以实现OnItemSelectedListener接口,来实现选中效果的展示。
*/
public class MainActivity extends Activity implements OnItemSelectedListener{ private Spinner spinner ; private ArrayAdapter<CharSequence> adapter ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.spinner =(Spinner) this.findViewById(R.id.spinner1); //两种方式给下拉列表注册适配器 //2 :.createFromResource(content对象,xml中数组id,样式ID) adapter = ArrayAdapter.createFromResource(MainActivity.this, R.array.planets_array,android.R.layout.simple_spinner_dropdown_item ); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); //注册监听器 spinner.setOnItemSelectedListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String item = (String) spinner.getItemAtPosition(position); Toast.makeText(MainActivity.this, "您选中了"+item+"选项", 1).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } }

  需要注意的是,第二种方式需要在string资源文件中添加数组:

   <string-array name="planets_array">        <item>Mercury</item>        <item>Venus</item>        <item>Earth</item>    </string-array

  运行项目,同样能得到想要的下拉框列表。

  

更多相关文章

  1. 关于安卓 TextView 添加点击事件
  2. android ellipsize 属性详解
  3. Android(安卓)Tabhost中tab添加数字demo
  4. Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源
  5. android 开发技巧(9)--为文本添加发亮的效果
  6. Android(安卓)启动栈管理方式 (二)
  7. android的图片添加、滚动条、单选框、多选框、跳转界面
  8. Cordova 3.x 源码分析(6) -- cordova.js本地交互JSNative
  9. Cordova 3.x 源码分析(6) -- cordova.js本地交互JSNative

随机推荐

  1. android tab和listiew
  2. 2012版辅助开发工具包(ADT)新功能特性介绍
  3. Android自动化测试之MonkeyRunner工具(六)
  4. Flutter下载更新App的方法示例
  5. osg for android (一) 简单几何物体的加
  6. MPAndroidChart项目实战(七)——自定义横向
  7. Android应用程序的签名
  8. Android声音管理方法
  9. Android(安卓)进程保活手段分析
  10. Android/iOS内嵌Unity开发示例