下拉列表Spinner的使用



1.在res/values/strings.xml文件中加入字符串资源   

   

 <string name="ys">您的爱好</string>
    <string name="lq">篮  球</string>
    <string name="zq">足  球</string>
    <string name="pq">排  球</string>


2.准备颜色资源在res/values目录下新建colors.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#fd8d8d</color>
	<color name="green">#9cfda3</color>
	<color name="blue">#8d9dfd</color>
	<color name="white">#FFFFFF</color>
	<color name="black">#000000</color>
</resources>


3.设置布局。在main.xml文件中写如下代码

<LinearLayout 
  android:id="@+id/LinearLayout01"   
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical"
  xmlns:android="http://schemas.android.com/apk/res/android">
  <TextView 
    android:text="@string/ys"
    android:id="@+id/TextView01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:textSize="28dip"/>
  <Spinner 
    android:id="@+id/Spinner01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/>
</LinearLayout>


4.源文件这样写

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
public class Spinner extends Activity {
	final static int WRAP_CONTENT=-2;//表示WRAP_CONTENT的常量
	//所有资源图片(足球、篮球、排球)id的数组
	int[] drawableIds={R.drawable.football,R.drawable.basketball,R.drawable.volleyball};
	//所有资源字符串(足球、篮球、排球)id的数组
	int[] msgIds={R.string.zq,R.string.lq,R.string.pq};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Spinner sp=(Spinner)this.findViewById(R.id.Spinner01);//初始化Spinner
        BaseAdapter ba=new BaseAdapter(){//为Spinner准备内容适配器
			@Override
			public int getCount() {return 3;}//总共三个选项
			@Override
			public Object getItem(int arg0) { return null; }
			@Override
			public long getItemId(int arg0) { return 0; }
			@Override
			public View getView(int arg0, View arg1, ViewGroup arg2) {
				// 动态生成每个下拉项对应的View,每个下拉项View由LinearLayout
				//中包含一个ImageView及一个TextView构成
				//初始化LinearLayout
				LinearLayout ll=new LinearLayout(Sample_5_9.this);
				ll.setOrientation(LinearLayout.HORIZONTAL);		//设置朝向	
				//初始化ImageView
				ImageView  ii=new ImageView(Sample_5_9.this);
				ii.setImageDrawable(getResources().getDrawable(drawableIds[arg0]));//设置图片
				ll.addView(ii);//添加到LinearLayout中
				//初始化TextView
				TextView tv=new TextView(Sample_5_9.this);
				tv.setText(" "+getResources().getText(msgIds[arg0]));//设置内容
				tv.setTextSize(24);//设置字体大小
				tv.setTextColor(R.color.black);//设置字体颜色
				ll.addView(tv);//添加到LinearLayout中
				return ll;
			}        	
        };
        sp.setAdapter(ba);//为Spinner设置内容适配器
        sp.setOnItemSelectedListener(//设置选项选中的监听器
           new OnItemSelectedListener(){
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {//重写选项被选中事件的处理方法
				TextView tv=(TextView)findViewById(R.id.TextView01);//获取主界面TextView
				LinearLayout ll=(LinearLayout)arg1;//获取当前选中选项对应的LinearLayout
				TextView tvn=(TextView)ll.getChildAt(1);//获取其中的TextView 
				StringBuilder sb=new StringBuilder();//用StringBuilder动态生成信息
				sb.append(getResources().getText(R.string.ys));
				sb.append(":");
				sb.append(tvn.getText());
				tv.setText(sb.toString());//信息设置进主界面TextView		
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) { }        	   
           }
        );
    }
}

版权声明:

posted on 2014-12-20 17:24  moffis  阅读(191)  评论(0编辑  收藏  举报

导航