目录(?)[-]

  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开发相关文章

【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner的更多相关文章

  1. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  2. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...

  3. 【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制

    目录(?)[-] TextView 例子1在XML中设置autoLink属性 例子2在代码中设置autoLink属性 EditText AutoCompleteTextView MultiAutoCo ...

  4. 【转】Pro Android学习笔记(十):了解Intent(上)

    目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...

  5. 【转】Pro Android学习笔记(十八):用户界面和控制(6):Adapter和AdapterView

    目录(?)[-] SimpleCursorAdapter 系统预置的layout ArrayAdapter 动态数据增插删排序 自定义TextView风格 其他Adapter AdapterView不 ...

  6. 【转】Pro Android学习笔记(十六):用户界面和控制(4):ImageView控件

    目录(?)[-] XML片段 代码设置ImageView ImageView是基础的控件,它是android.widget.ImageView的继承类. XML片段      <LinearLa ...

  7. 【转】Pro Android学习笔记(十五):用户界面和控制(3):Button控件

    目录(?)[-] 基础Button ImageButton ToggleButton CheckBox RadioButton 基础Button Button是最常用的基础控件之一,在Android中 ...

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

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

  9. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  10. 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单

    目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...

随机推荐

  1. images have the “stationarity” property, which implies that features that are useful in one region are also likely to be useful for other regions.

    Convolutional networks may include local or global pooling layers[clarification needed], which combi ...

  2. PHP开发环境搭建(转载)

    转载自:http://blog.csdn.net/rosetta/article/details/53967215 前言   最近学了n种语言,学每种语言的套路无非就是先搭建一个开发环境,再找本书或者 ...

  3. redis持久化AOF详细操作步骤

    1.切换到redis目录下面,创建文件 s3-redis.conf 2.编辑文件s3-redis.conf 3.终止当前redis服务端 4.登录redis客户端失败,说明服务端已停止 5.重启red ...

  4. GeekforGeeks Trie - 键树简单介绍 - 构造 插入 和 搜索

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  5. bug_1——oracle listagg():列转行

    select    listagg(字段名 ,',') within group (order by 字段名) from表 where 条件 listagg():列转行 WM_CONCAT():和并列 ...

  6. linux 基础2-null,cut,wc,head,tail

    一. 特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它的数据 ...

  7. Django——form组件is_valid校验机制

    #先来归纳一下整个流程#(1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase#(2)接着分析errors.里面判断_errors是都为空,如果为空返回self. ...

  8. Vue-cli创建项目从单页面到多页面4 - 本地开发服务器设置代理

    前后端分离开发时,有时候会遇到跨域的情况:只在开发的时候存在跨域,项目上线后,由于配置的域名相同,跨域就会不存在. 这个时候,有两种方案可以比较快的解决: 1.利用h5的特性,使用cors,在ngni ...

  9. 20165101刘天野 2018-2019-2《网络对抗技术》Exp6 信息搜集与漏洞扫描

    目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp6 信息搜集与漏洞扫描 1.实验内容 1.1 各种搜索技巧的应用 1.2 DNS IP注册信息的查询 1.3 基本 ...

  10. 一步一步带你分析 requirejs

    详细源代码一共就2000多行,来看我这篇分析的同学应该都下载下来了,好了,话不多说,开始: 代码的开头就出现3个全局变量: requirejs, require, define var require ...