【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner
目录(?)[-]
- GridView
- Spinner
GridView
GridView是网格状布局,如图所示。在了解ListView后,很容易了解GridView。下面是例子的XML文件。
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ui_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dip"
android:verticalSpacing="10dip"
android:horizontalSpacing="10dip"
android:columnWidth="100dip"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:gravity="center" />
Java代码如下:
public class UiGridViewTest extends Activity{ //注意没有像ListView那样有extends ListActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_gridview);
GridView gv = (GridView)findViewById(R.id.ui_grid);
//仍然以联系人为例子,获取数据源和设置adapter和之前的listview例子相同,我们对子view的设置仍选择系统自带的简单方式。
CursorLoader cursorLoader = new CursorLoader(getApplicationContext(),
ContactsContract.Contacts.CONTENT_URI,
null, null, null,
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
Cursor cursor = cursorLoader.loadInBackground();
String[] cols = new String[]{ContactsContract.Contacts.DISPLAY_NAME};
int[] views = new int[]{android.R.id.text1};
SimpleCursorAdapter simAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
cursor, cols, views,CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
//为GridView关联adapter
gv.setAdapter(simAdapter); //去查reference发现GridView的setAdapter(ListAdapter adapter),adapter要求是ListAdapter,grid是二维的,实际上一行一行地处理,每行实际也是一个list。
}
}
在前面ListView中有关数据信息的获取和触发一样可以在GridView中使用,但注意有一点不同,GridView不提供多项选择(multiple choices)。推荐阅读Android学习笔记(十三):Activity-GridView。
Spinner
这是一个spinner的例子,左边第一个图是正常显示模式,当我们点击有下小三角图标是,会显示一个下拉单。如有右边两个图所示。和之前的ListView和GridView不一样的在于,spinner有两个显示,一是普通模式,一是pop-up list模式。我们需要在代码中分别对这两个显示进行设置。下面的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" >
<Spinner android:id="@+id/ui_spinner"
android:prompt="@string/planets" <!-- 这个提示内容,实际并没有真实显示,只是用于说明 -->
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
代码如下:
public class UiSpinnerTest extends Activity implements OnItemSelectedListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_spinner);
Spinner spin = (Spinner)findViewById(R.id.ui_spinner);
//本例采用ArrayAdapter,这里的第三个参数是设置普通模式的显示,即一个简单的TextView,虽然这里可视的只是其中一个item,但整个概念和listview的一样。
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets, android.R.layout.simple_spinner_item);
//通过setDropDownViewResource设置pop-up list的子view显示layout,我们采用了不同的layout,分别为有不同的显示效果,见上图所示。需要注意的是Android版本不同,会对layout的实际布局有不同,在API Level 17(Android 4.2.2)中,simple_spinner_dropdown_item中去掉checkMark。
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
spin.setAdapter(adapter);
//选择变化,触发OnItemSelectedListener
spin.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View view, int pos, long index) {
Log.d("Spinner",view.toString());
Log.d("Spinner","" + ((TextView)view).getText());
//本例中普通模式的子view是TextView,而pop-up list的CheckedTextView,在onItemSelected中,给出的view是普通模式下的子view,这点需要特别注意。
Log.d("Spinner","" + pos + " " + index);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
Log.d("Spinner","Nothing Selected");
}
}
推荐阅读Android学习笔记(十二):Activity-Spinner
相关链接: 我的Android开发相关文章
转载于:https://www.cnblogs.com/blongfree/p/5047900.html
【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner相关推荐
- 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout...
目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
- Pro Android学习笔记(三三):Menu(4):Alternative菜单
什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...
- Mr.J-- jQuery学习笔记(二十八)--DOM操作方法(添加方法总结)
Table of Contents appendTo appendTo(source, target) 源代码 append prependTo prependTo源码 prepend ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- uniapp 学习笔记二十二 购物车页面结构搭建
uniapp 学习笔记二十二 购物车页面结构搭建 cart.vue <template><view><view class="flex padding" ...
- Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用
Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...
- Pro Android学习笔记(七七):服务(2):Local Service
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Local Service的目的是更容易实 ...
最新文章
- MapReduce简述、工作流程
- CMU提出「十字绣网络」,自动决定多任务学习的最佳共享层
- jQuery event的复制粘贴的坑
- 使用async,await关键字进行API Access Token的获取
- linux使用ntp时间同步
- jquery去掉数组最后一个元素_从数组中删除最后一项
- JQuery 表单校验
- em算法怎么对应原有分类_机器学习基础-EM算法
- 信息学奥赛一本通(2045:【例5.13】蛇形填数)
- 网络口协商_以太网端口协商原理
- python 配置文件返回的两种方式,写法不一样而已
- Vector Math for 3D Computer Graphics
- 一文看懂阿里、京东、滴滴大数据架构变迁
- 世界杯座位选择顺序总数
- css对网页模块进行样式定义,模块七 使用CSS样式1217.ppt
- 怎么把matlab的背景改成白色背景图片,如何把图片背景换成白色?
- lisp 设计盘形齿轮铣刀_用AutoLISP设计盘形齿轮铣刀渐开线齿形
- Xcode可以清理哪些缓存?
- 【二】Centos 7.6下载与安装
- “甲流疫情死亡率”较标准程序
热门文章
- Android equal和==的区别
- 谷歌,火狐浏览器不能禁用自动补齐的bug缺陷
- Extjs创建多个application实现多模块MVC动态加载。。
- 求一列数据中的波峰_pandas查看缺失数据占比(实战)
- scala 高级类型
- (13)System Verilog随机数组
- (09)System Verilog 父类与子类成员变量同名冲突
- oracle存储过程导出查询结果,ORACLE如何实现函数、包、存储过程的导入和导出
- manjaro双系统 windows_在Windows基础上安装Manjaro双系统和基本配置
- redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?