目录(?)[-]

  1. GridView
  2. 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相关推荐

  1. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout...

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

  2. Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...

  3. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  4. Pro Android学习笔记(三三):Menu(4):Alternative菜单

    什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...

  5. Mr.J-- jQuery学习笔记(二十八)--DOM操作方法(添加方法总结)

    Table of Contents appendTo appendTo(source, target) 源代码 append prependTo ​ ​ ​ ​ prependTo源码 prepend ...

  6. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  7. uniapp 学习笔记二十二 购物车页面结构搭建

    uniapp 学习笔记二十二 购物车页面结构搭建 cart.vue <template><view><view class="flex padding" ...

  8. Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用

    Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...

  9. Pro Android学习笔记(七七):服务(2):Local Service

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Local Service的目的是更容易实 ...

最新文章

  1. MapReduce简述、工作流程
  2. CMU提出「十字绣网络」,自动决定多任务学习的最佳共享层
  3. jQuery event的复制粘贴的坑
  4. 使用async,await关键字进行API Access Token的获取
  5. linux使用ntp时间同步
  6. jquery去掉数组最后一个元素_从数组中删除最后一项
  7. JQuery 表单校验
  8. em算法怎么对应原有分类_机器学习基础-EM算法
  9. 信息学奥赛一本通(2045:【例5.13】蛇形填数)
  10. 网络口协商_以太网端口协商原理
  11. python 配置文件返回的两种方式,写法不一样而已
  12. Vector Math for 3D Computer Graphics
  13. 一文看懂阿里、京东、滴滴大数据架构变迁
  14. 世界杯座位选择顺序总数
  15. css对网页模块进行样式定义,模块七 使用CSS样式1217.ppt
  16. 怎么把matlab的背景改成白色背景图片,如何把图片背景换成白色?
  17. lisp 设计盘形齿轮铣刀_用AutoLISP设计盘形齿轮铣刀渐开线齿形
  18. Xcode可以清理哪些缓存?
  19. 【二】Centos 7.6下载与安装
  20. “甲流疫情死亡率”较标准程序

热门文章

  1. Android equal和==的区别
  2. 谷歌,火狐浏览器不能禁用自动补齐的bug缺陷
  3. Extjs创建多个application实现多模块MVC动态加载。。
  4. 求一列数据中的波峰_pandas查看缺失数据占比(实战)
  5. scala 高级类型
  6. (13)System Verilog随机数组
  7. (09)System Verilog 父类与子类成员变量同名冲突
  8. oracle存储过程导出查询结果,ORACLE如何实现函数、包、存储过程的导入和导出
  9. manjaro双系统 windows_在Windows基础上安装Manjaro双系统和基本配置
  10. redis和mysql双写一致_缓存与库双写一致,这种“老大难”怎么给它制服?