组件的使用(一)Spinner的使用
来源:互联网 发布:c语言转换汇编语言 编辑:程序博客网 时间:2024/06/11 09:38
Spinner即下拉菜单。
基本使用
在android中实现Spinner组件需要以下三个步骤:
1.在XML文件中定义标签Spinner
<Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" <!--其它属性略--> />
2.在Strings.xml文件中声明items
<resources> <string name="item1">Item1</string> <string name="item2">Item2</string> <string name="item3">Item3</string> <!--其它item省略--></resources>
3.Java代码实现Controller
我们需要BaseAdapter将字符串数据传给Spinner UI组件,而实现BaseAdapter必须覆盖一些方法。
代码片示例:
//数据域Spinner spinner;int[] messageIds={R.string.item1,R.string.item2,R.string.item3};//下拉菜单spinner的items资源 //覆盖onCreate()方法 @Override public void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 super.onCreate(savedInstanceState); setContentView(R.layout.register); processSpinner();//处理下拉菜单spinner } //此方法用于处理下拉列表spinner private void processSpinner(){ spinner=(Spinner)findViewById(R.id.spinner); //adapter 作为spinner的适配器 BaseAdapter baseAdapter=new BaseAdapter() { @Override public View getView(int position, View convertView, ViewGroup parent) { TextView spinnerItemTextView=new TextView(Register.this); spinnerItemTextView.setText(" "+getResources().getText(messageIds[position])); spinnerItemTextView.setTextColor(Color.BLACK); spinnerItemTextView.setTextSize(16); return spinnerItemTextView; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public int getCount() { // TODO Auto-generated method stub return 3; } }; spinner.setAdapter(baseAdapter);//为spinner设置adapter }
如果要为Spinner Items设置点击事件的话,可以这么做:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String str=parent.getItemAtPosition(position).toString(); Toast.makeText(SpinnerActivity.this, "你点击的是:"+str, 2000).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub }});
注意:
其实,String资源也可以写成另一种形式:
<string-array name="spinnername"> <item>北京</item> <item>上海 </item> <item>广州</item> <item>深圳</item> </string-array>
对应的java代码中是建立String数组而不是String ID数组。
// 建立String数组存储Spinner数据String[] mItems = getResources().getStringArray(R.array.spinnername);
附:
BaseAdapter的使用
——————————————————————————————————————————————–
改变风格
笔者在用BaseAdapter时出现了如下问题:
生成的下拉列表item的分割线是黑的,看起来很难看。leader让改掉颜色,但笔者查遍api,并无设置此颜色的方法。最后百度到有同学遇到和我一样的问题。结果采用人家的方法,就ok了。
方法是修改当前Activity的主题。
具体:
1.在styles.xml文件下自定义分割线风格。
示例:
<style name="mySpinnerStyle" parent="android:style/Widget.ListView.DropDown"> <item name="android:divider">#000000</item> <item name="android:dividerHeight">2dp</item> </style>
2.在styles文件的名叫AppTheme的style标签中声明上面刚刚定义的风格。
示例:
<style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:dropDownListViewStyle">@style/mySpinnerStyle</item> </style>
(其中的 < item > 标签是新声明的)
3.在manifest文件下此activity标签的属性中添加刚刚设置的主题。
示例:
<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
(其中android:theme=”@style/AppTheme”这条属性是刚刚添加的)
设置默认选项
使用editText.setSelection(position);
注意:此句应放在setAdapter后面
- 组件的使用(一)Spinner的使用
- spinner组件的使用
- Spinner组件的使用
- Android组件的使用:AutoCompleteTextView、Spinner
- Spinner使用(一)
- Spinner 的使用
- Spinner控件的使用
- Spinner的使用
- Spinner的使用
- Spinner的简单使用
- Android Spinner的使用
- Spinner控件的使用
- spinner的使用详解
- android spinner的使用
- Spinner的使用
- Spinner的使用
- Spinner的使用
- spinner的简单使用
- ZOJ 3890Wumpus
- select,poll,epoll
- 《开源公开课1》:开源框架构建与实践
- 程序设计方法学基本概念汇总
- MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
- 组件的使用(一)Spinner的使用
- HDU 4283 You Are the One(区间dp)
- 二叉树的遍历
- java 数据结构之 链式线性表
- ios 随机数 int x = arc4random() % 100;
- 贴个模板,POJ 1511
- bind搭建dns,ping域名需要几秒才能通
- 关于文件和文件夹在复制后属性时间变化的细节问题
- 03_TortoiseGit冲突和补丁演示,补丁冲突