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>