Android开发
3、Android高级控件的使用:
Spinner的使用方法:
使用ArrayAdapter
- // 初始化控件
- Spinner spinner = (Spinner) findViewById(R.id.spinner1);
- // 建立数据源
- String[] mItems = getResources().getStringArray(R.array.languages);
- // 建立Adapter并且绑定数据源
- ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- //绑定 Adapter到控件
- spinner .setAdapter(adapter);
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view,
- int pos, long id) {
- String[] languages = getResources().getStringArray(R.array.languages);
- Toast.makeText(MainActivity.this, "你点击的是:"+languages[pos], 2000).show();
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- // Another interface callback
- }
- });
这是Spinner的标准使用方法,其中,有两行代码可以决定Spinner的外观:
1
- ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);
第二个参数是Spinner未展开菜单时Spinner的默认样式,android.R.layout.simple_spinner_item是系统自带的内置布局。
2
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
设置的是展开的时候下拉菜单的样式(注意和上面区别),同理android.R.layout.simple_spinner_dropdown_item也是内置布局。
如果不设置adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)会怎样呢?
会造成未展开的sipnner和展开的菜单都是一种布局样式。下面一运行截图来说明:
没有adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item):
有setDropDownViewResource:
你可能会很好奇如果设置了setDropDownViewResource但是setDropDownViewResource的参数和ArrayAdapter的第二个布局参数(simple_spinner_item)一致的情况下会怎样。情况是和没有setDropDownViewResource是一样的,因为上面说了不设置setDropDownViewResource Spinner未展开和展开都是用的一样的布局。
其实simple_spinner_item和simple_spinner_dropdown_item两者的名字正好反映了他们的区别。一个应用于下拉一个应用于Spinner本身。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端