Android下拉框控件Spinner的使用
16lz
2022-03-15
select_spinner.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="this is FirstActivity of AppB" /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
代码实现:
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.select_spinner); spinner = (Spinner) findViewById(R.id.spinner); spinner.setPrompt("请选择"); final int [] drawableIds = {R.drawable.aa, R.drawable.icon}; final int [] msgIds = {R.string.aa, R.string.bb}; BaseAdapter baseAdapter = new BaseAdapter() { @Override public int getCount() { return msgIds.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // 动态生成每个下拉项对应的View,每个下拉项View由LinearLayout // 中包含一个ImageView及一个TextView构成 // 初始化LinearLayout LinearLayout ll = new LinearLayout(TestActivity.this); ll.setOrientation(LinearLayout.HORIZONTAL); // 初始化ImageView ImageView ii = new ImageView(TestActivity.this); ii.setImageDrawable((getResources().getDrawable(drawableIds[position]))); ll.addView(ii); // 初始化TextView TextView tv = new TextView(TestActivity.this); tv.setText(" " + getResources().getText(msgIds[position])); tv.setTextColor(R.color.blue); tv.setTextSize(24); ll.addView(tv); return ll; } }; spinner.setAdapter(baseAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View view, int arg2, long arg3) { //被选中时候发生的动作 Log.i("chen", "===="+arg0+" "+view+" "+arg2+" "+arg3); // 获取主界面TextView TextView tv = (TextView) findViewById(R.id.TextView01); // 获取当前选中选项对应的LinearLayout LinearLayout ll = (LinearLayout) view; // 获取其中的TextView TextView tvn = (TextView) ll.getChildAt(1); // 用StringBuilder动态生成信息 StringBuilder sb = new StringBuilder(); sb.append(getResources().getText(R.string.app_name)); sb.append(":"); sb.append(tvn.getText()); // 信息设置进住界面 tv.setText(sb.toString()); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); }
如果用ArrayAdapter实现如下:
//设置下拉框控件的标题文本内容:spinner.setPrompt("请选择");//定义下拉框内容:String [] datas = {“ATAAW.COM”,”Android.com”,”Google.com”};//定义添加适配器:ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, datas, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);//响应下拉框的选中值发生变化的事件处理:spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //被选中时候发生的动作 } @Override public void onNothingSelected(AdapterView<?> arg0) { } });
更多相关文章
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- 【HR小时制】如何获取Android系统时间的小时制
- 一个android访问http资源的便捷工具类――HttpHelper
- 分享一个Android日志记录的工具类
- android 中获取屏幕大小
- Android(安卓)星级评分条DEMO
- Android(安卓)获取时间实时更新UI
- Android(安卓)获取View宽高
- Android(安卓)获取视频缩略图