自定义的Spinner



 

 

public class Spinner2 extends Activity {
	final static int WRAP_CONTENT = -2;// 表示WRAP_CONTENT的常量
	// 所有资源图片(足球、篮球、排球)id的数组
	int[] imageId = { R.drawable.football, R.drawable.basketball,
			R.drawable.volleyball };
	// 所有资源字符串(足球、篮球、排球)id的数组
	int[] strID = { R.string.zq, R.string.lq, R.string.pq };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.spinner2);

		setTitle("自定义Spinner");

		Spinner sp = (Spinner) this.findViewById(R.id.Spinner01);// 初始化Spinner

		/**
		 * 重写适配器
		 */
		BaseAdapter baseAdapter = 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 = new LinearLayout(Spinner2.this);

				linearLayout.setOrientation(LinearLayout.HORIZONTAL); // 设置朝向

				// 初始化ImageView
				ImageView imageView = new ImageView(Spinner2.this);
				imageView.setImageDrawable(getResources().getDrawable(
						imageId[arg0]));// 设置图片

				// 初始化TextView
				TextView tv = new TextView(Spinner2.this);
				tv.setText(" " + getResources().getText(strID[arg0]));// 设置内容
				tv.setTextSize(24);// 设置字体大小
				tv.setTextColor(R.color.white);// 设置字体颜色

				linearLayout.addView(imageView);// 添加到LinearLayout中
				linearLayout.addView(tv);// 添加到LinearLayout中
				return linearLayout;
			}
		};

		sp.setAdapter(baseAdapter);// 为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 linearLayout = (LinearLayout) arg1;// 获取当前选中选项对应的LinearLayout
						TextView tvn = (TextView) linearLayout.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) {
					}
				});
	}
}

 

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<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>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值