Android API 中文 (15) —— GridView

简介:
+关注继续查看

正文

  一、结构

 

 

    public final class GridView extends AbsListView

 

    java.lang.Object 
android.view.View 
android.view.ViewGroup 
android.widget.AdapterView<T extends android.widget.Adapter> 
android.widget.AbsListView 
android.widget.GridView

 

  二、类概述

    一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联。比如android手机中显示的应用:

 

 

比如实现九宫格图,用GridView是首选,也是最简单的。

 

  三、构造函数

    public GridView (Context context) 
创建一个默认属性的GridView实例

    public GridView (Context context, AttributeSet attrs)

    创建一个带有attrs属性的GridView实例

    public GridView (Context context, AttributeSet attrs, int defStyle)

    创建一个带有attrs属性,并且指定其默认样式的GridView实例

 

  四、XML属性

属性名称

描述

android:columnWidth

设置列的宽度。关联的方法为:setColumnWidth(int)

android:gravity

设置此组件中的内容在组件中的位置。可选的值有:topbottomleftrightcenter_verticalfill_verticalcenter_horizontalfill_horizontalcenterfillclip_vertical 可以多选,用“|”分开。关联方法:setGravity (int gravity)

android:horizontalSpacing

两列之间的间距。关联方法:setHorizontalSpacing(int)

android:numColumns

列数。关联方法:setNumColumns(int)

android:stretchMode

缩放模式。关联方法:setStretchMode(int)

android:verticalSpacing

两行之间的间距。关联方法:setVerticalSpacing(int)

 

  五、公共方法

 

         public ListAdapter getAdapter ()

   获得与此组件相关的适配器..

返回值

    ListAdapter适配器实例

        

         public int getStretchMode ()

  获得GridView的缩放模式..

 

         public boolean onKeyDown (int keyCode, KeyEvent event)

  默认由KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入 KEYCODE_DPAD_CENTERKEYCODE_ENTER值是执行的是按下视图操作。

       参数

              keyCode 一个表示按下操作的键值.

event 表示按钮事件的对象

                  返回值

如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false

 

         public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)

   默认由KeyEvent.Callback.onKeyMultiple()实现,总是返回false(不处理此事件)。

         参数

                   keyCode 键值.

repeatCount 该动作发生的次数.

event 事件对象

                  返回值

如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false

 

         public boolean onKeyUp (int keyCode, KeyEvent event)

   默认由KeyEvent.Callback.onKeyMultiple()实现,如果视图是可用的并且是可点击的,那么传入KEYCODE_DPAD_CENTERKEYCODE_ENTER值是执行的是点击视图操作。

参数

              keyCode 键值.

event 事件对象.

                  返回值

如果你认为已经完成事件处理,不想让让下一个处理器来处理此事件,则返回true,否则返回false

 

         public void setAdapter (ListAdapter adapter)

   设置GridView的数据。

                  参数

                            adapter grid提供数据的适配器 

 

         public void setColumnWidth (int columnWidth)

   设置GridView的列宽.

                  参数

                            columnWidth 列的宽度,以像素为单位

 

         public void setGravity (int gravity)

   设置控件内容的位置,默认值为:Gravity.LEFT.

                  参数

                            gravity 位置值

 

         public void setHorizontalSpacing (int horizontalSpacing)

   设置列间距.

                  参数

                            horizontalSpacing 列间距值

 

public void setNumColumns (int numColumns)

        设置grid的列数

 

参数

numColumns 列数值.

 

public void setSelection (int position)

        设置选中的条目.

 

参数

position . 数据条目在列表中的索引值(从0开始),如果在可触摸的模式下,在该索引值下的条目将不会被选中,但是该索引值仍然指向该条目。

 

public void setStretchMode (int stretchMode)

设置grid中的条目以什么缩放模式去填充空间。.

 

参数

stretchMode 可选值:NO_STRETCHSTRETCH_SPACINGSTRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH

 

public void setVerticalSpacing (int verticalSpacing)

设置行间距.

   参数

      verticalSpacing 间距值,以像素为单位 

 

 

  六、代码示例

    下面给出一个小例子先看效果:

 

 

a).  GridView01.java

public class GridView01 extends Activity {
    
private GridView gridview;
    @Override
    
protected void onCreate(Bundle savedInstanceState) {
        
// TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridview);
        
//准备要添加的数据条目
        List<Map<String, Object>> items = new ArrayList<Map<String,Object>>();
        
for (int i = 0; i < 10; i++) {
            Map
<String, Object> item = new HashMap<String, Object>();
            item.put(
"imageItem", R.drawable.icon);
            item.put(
"textItem""text" + i);
            items.add(item);
        }
//实例化一个适配器
        SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.grid_item, new String[]{"imageItem""textItem"}, new int[]{R.id.image_item, R.id.text_item});
        
//获得GridView实例
        gridview = (GridView)findViewById(R.id.mygridview);
        
//gridview.setNumColumns(3);//可以在xml中设置
        
//gridview.setGravity(Gravity.CENTER);//同上
//将GridView和数据适配器关联
        gridview.setAdapter(adapter);
    }
}

 

    b).  gridview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
="wrap_content"
    android:layout_height
="wrap_content">
    
<GridView android:id="@+id/mygridview"
        android:numColumns
="3"
        android:gravity
="center_horizontal"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content">
    
</GridView>
</LinearLayout>

    c).  grid_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width
="fill_parent" android:layout_height="fill_parent"
    xmlns:android
="http://schemas.android.com/apk/res/android">
    
<ImageView android:id="@+id/image_item"
        android:layout_width
="wrap_content"
        android:layout_height
="wrap_content">
    
</ImageView>
    
<TextView android:id="@+id/text_item"
        android:layout_below
="@+id/image_item"
        android:layout_height
="wrap_content"
        android:layout_width
="wrap_content">
    
</TextView>
</RelativeLayout>

 

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582689,如需转载请自行联系原作者

相关文章
|
8天前
|
缓存 API Android开发
Android 毕业设计美图与开发资讯 App - 看妹纸与论坛资讯
Android 毕业设计美图与开发资讯 App - 看妹纸与论坛资讯
|
8天前
|
物联网 Android开发 芯片
我也是可以开发安卓蓝牙应用的男人了
我也是可以开发安卓蓝牙应用的男人了
|
11天前
|
存储 Linux Android开发
会C/C++就可以开发Linux/Android应用程序?替代传统串口屏的Yoxios了解一下!
会C/C++就可以开发Linux/Android应用程序?替代传统串口屏的Yoxios了解一下!
28 0
|
12天前
|
Android开发
Android获取已连接wifi的热点信息(上位机开发学习之多个界面切换编程)
Android获取已连接wifi的热点信息(上位机开发学习之多个界面切换编程)
23 0
|
XML Android开发 UED
Android GridView子元素item按击交互设计:背景颜色改变
《Android GridView子元素按击交互设计:背景颜色改变》 效果图: 大致的需求和ListView相仿,就是要求用户点击GridView中的子元素时候,要有一定的交互响应(背景颜色改变表明用户的操作)。
843 0
相关产品
云迁移中心
推荐文章
更多