Android开发总结笔记 Spinner(列表选项框) 1-1-15
2015-10-13 09:26
393 查看
从Spinner的继承结构就可以看出,这是一个Adapter组件(使用adapter显示数据)
下面来看一下Spinner的一些属性
android:dropDownHorizontalOffset:设置列表框的水平偏移距离
android:dropDownVerticalOffset:设置列表框的水平竖直距离
android:dropDownSelector:列表框被选中时的背景
android:dropDownWidth:设置下拉列表框的宽度
android:gravity:设置里面组件的对其方式
android:popupBackground:设置列表框的背景
android:prompt:设置对话框模式的列表框的提示信息(标题),只能够引用string.xml中的资源id,而不能直接写字符串
android:spinnerMode:列表框的模式,有两个可选值:dialog:对话框风格的窗口dropdown:下拉菜单风格的窗口(默认)可选属性:android:entries:使用数组资源设置下拉列表框的列表项目
为Spinner填充数据的方式有两种
通过android:entries属性(不过这个只能用数组数据来填充)
通过设置自定义Adapter来填充
下面就来演示一下这两种方式
activity_main.xml
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:entries="@array/provinces"
android:spinnerMode="dropdown"></Spinner>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:spinnerMode="dialog"></Spinner>
</LinearLayout>
数组数据
<string-arrayname="provinces">
<item>广东</item>
<item>重庆</item>
<item>山东</item>
<item>山西</item>
<item>陕西</item>
<item>青岛</item>
</string-array>
spinner_layout.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"/>
<TextView
android:layout_gravity="center"
android:id="@+id/tv_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>
[/code]
SpinnerAdapter.java
packagecom.example.sumup;
importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.TextView;
importjava.util.ArrayList;
publicclassSpinnerAdapterextendsBaseAdapter{
privateContextmContext;
privateArrayList<City>mCities;
publicSpinnerAdapter(Contextcontext,ArrayList<City>city){
mContext=context;
mCities=city;
}
@Override
publicintgetCount(){
returnmCities.size();
}
@Override
publicObjectgetItem(intposition){
returnposition;
}
@Override
publiclonggetItemId(intposition){
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
convertView=LayoutInflater.from(mContext).inflate(R.layout.spinner_layout,parent,false);
TextViewtextView=(TextView)convertView.findViewById(R.id.tv_spinner);
textView.setText(mCities.get(position).getName());
returnconvertView;
}
}
象征性地来个实体类
City.java
packagecom.example.sumup;
publicclassCity{
privateStringname;
publicCity(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
MainActivity.java
packagecom.example.sumup;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.Spinner;
importandroid.widget.Toast;
importjava.util.ArrayList;
publicclassMainActivityextendsAppCompatActivity{
privateSpinnermSp;
privateArrayList<City>mCities;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
privatevoidinitView(){
mCities=newArrayList<>();
mSp=(Spinner)findViewById(R.id.spinner);
mCities.add(newCity("广州"));
mCities.add(newCity("北京"));
mCities.add(newCity("中山"));
mCities.add(newCity("上海"));
mCities.add(newCity("深圳"));
mSp.setAdapter(newSpinnerAdapter(this,mCities));
mSp.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
@Override
publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){
Toast.makeText(MainActivity.this,mCities.get(position).getName(),Toast.LENGTH_SHORT).show();
}
@Override
publicvoidonNothingSelected(AdapterView<?>parent){
}
});
}
}
[/code]
相关文章推荐
- Android版手机斗地主游戏源码
- Android版手机斗地主游戏源码
- Android 复制到剪贴板的方法
- Android智力火柴游戏源码项目
- Android智力火柴游戏源码项目
- android 获取天气信息,解决了乱码的问题
- Android Studio 快捷方式的使用
- 实战技巧:Android异步指南
- android中任务栈的处理方式
- android Rom修改关于系统时间日期格式的修改
- Andorid多线程断点续传下载
- 写在开发前——android各种准备工作
- Android图形显示系统——上层显示2:硬件加速实现
- android studio 快捷键
- 随我一起慢慢揭开Andoird里事件分发机制的神秘面纱
- Android 应用程序组件
- Android定制ListView的界面(使用继承自ArrayAdapter的自定义适配器)--《第一行代码Android》学习笔记
- Android的横竖屏切换
- 利用反射获取android内置外置SDCARD路径
- Android之Base64