android基础开发中spinner控件作为基础控件之一比较常见,下面简单记录下它的使用:
一、布局文件中的Spinner
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="vertical"
android:gravity="center_vertical">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:text="请选择您的职业?"
/>
android:id="@+id/spinner_job"
android:layout_width="match_parent"
android:layout_height="30dp"
android:spinnerMode="dropdown"
/>
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#90909090" />
在布局文件中定义Spinner很简单,它一个重要的属性是spinnerMode,它有2种情况
(1)为dropdown时,表示Spinner的数据下拉展示
(2)为dialog时,表示Spinner的数据为弹窗展示
二、Spinner使用静态数据
1.准备数据
在value文件夹下string.xml的resources标签下加入以下内容,注意name这个属性,后面需要使用
- 请选择
- 测试工程师
- 产品工程师
- 开发工程师
- 设计工程师
- 运维工程师
2.代码读取数据加载
public class WebFragment extends Fragment{
private Spinner spinner_job;
private ArrayAdapterjob_adapter;
public WebFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(ymxh.main.R.layout.fragment_web, container, false);
spinner_job = view.findViewById(R.id.spinner_job);
job_adapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_list,android.R.layout.simple_spinner_item);job_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner_job.setAdapter(job_adapter);
spinner_job.setSelection(0);spinner_button.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
spinner_button.setSelection(i);
}@Override
public void onNothingSelected(AdapterView> adapterView) {
spinner_button.setSelection(0);
}
});
return view;
}
}
自己编写的App是在Fragment中使用的,跟在Activity中一样的
job_adapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_list,android.R.layout.simple_spinner_item);
job_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
主要核心的代码就是这两行代码,使用适配器方法createFromResource读取数据,第一个参数是context上下文,第二个参数是在xml文件中配置数据的string-array的name名字,第三个参数是item数据项的格式,使用的是系统默认最简单的。setDropDownViewResource方法是设置下拉菜单样式使用默认的spinner下拉菜单样式(可以使用自定义的Layout布局)
三、使用适配器添加数据
上面使用数据文件管理数据的方法在实际开发中并不实用,在实际开发中数据更多的是来自数据库或者接口请求得到,这样的数据是动态性的可以保持灵活。下面使用List集合配合适配器实现下拉菜单
1.布局文件
在上面案例的布局文件中增加了一个spinner控件
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="vertical"
android:gravity="center_vertical">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="20sp"
android:text="请选择您喜欢的编程语言?"
/>
android:id="@+id/spinner_language"
android:layout_width="match_parent"
android:layout_height="30dp"
android:spinnerMode="dialog"
/>
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#90909090" />
2.准备List数据集合
//数据
Listdata_list = new ArrayList ();
data_list.add("请选择");
data_list.add("Java");
data_list.add("Python");
data_list.add("C语言");
data_list.add("C++");
data_list.add("C#");
data_list.add("JavaScript");
data_list.add("VBScript");
data_list.add("Ruby");
data_list.add("Rust");
data_list.add("PHP");
data_list.add("Go");
data_list.add("Perl");
data_list.add("TypeScript");
data_list.add("Lisp");
3.把数据载入适配器
public class WebFragment extends Fragment{
private Spinner spinner_language;
private ArrayAdapterjob_adapter;
public WebFragment() {
// Required empty public constructor
}@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(ymxh.main.R.layout.fragment_web, container, false);
spinner_language = view.findViewById(R.id.spinner_language);
//数据
data_list = new ArrayList();
data_list.add("请选择");
data_list.add("Java");
data_list.add("Python");
data_list.add("C语言");
data_list.add("C++");
data_list.add("C#");
data_list.add("JavaScript");
data_list.add("VBScript");
data_list.add("Ruby");
data_list.add("Rust");
data_list.add("PHP");
data_list.add("Go");
data_list.add("Perl");
data_list.add("TypeScript");
data_list.add("Lisp");//适配器
arr_adapter= new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, data_list);
//设置样式
arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//加载适配器
spinner_language.setAdapter(arr_adapter);
spinner_language.setSelection(0);spinner_language.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
spinner_language.setSelection(i);
}@Override
public void onNothingSelected(AdapterView> adapterView) {
spinner_language.setSelection(0);
}
});return view;
}
}