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

    

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

* GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或者是图标等
   * 在使用网格视图时,首先需要在屏幕上添加GridView组件,通常是在布局文件中添加

* GridView与ListView类似,都需要通过Adapter来提供要显示的数据,在使用GridView组件时,
   * 通常使用SimpleAdapter或者BaseAdapter类为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

设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_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_CENTER或KEYCODE_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_CENTER或KEYCODE_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_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFORM,或STRETCH_COLUMN_WIDTH

public void setVerticalSpacing (int verticalSpacing)

设置行间距.

  参数

      verticalSpacing 间距值,以像素为单位 
下面以一个具体的实例来说明GridView的用法。

当用户点击第一个按钮,文字的排版是2*2,当用户点击第二个按钮,文字的排版是3*3

下面是实现的截图:

下面给出实现的具体源代码:

1.两个布局文件的定义

主程序界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:background="@drawable/white"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"
><TextViewandroid:id="@+id/myTextView1"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"android:textColor="#00ff00"/><GridViewandroid:id="@+id/myGridView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:numColumns="5"/><LinearLayoutandroid:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/myButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/str_button1" /><Buttonandroid:id="@+id/myButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/str_button2" /></LinearLayout>
</LinearLayout>

GridView中文字的样式

<?xml version="1.0" encoding="utf-8"?>
<TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/myCheckedTextView1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:textColor="@drawable/blue"android:textSize="12sp"android:textAppearance="?android:attr/textAppearanceLarge"android:gravity="center_vertical"android:paddingLeft="6dip"android:minHeight="?android:attr/listPreferredItemHeight"
/>

2.主程序的实现

public class EX04_18 extends Activity
{ private TextView mTextView01; private Button mButton01,mButton02; /** GridView网格视图是按照行,列分布的方式来显示多个组件,通常用于显示图片或者是图标等* 在使用网格视图时,首先需要在屏幕上添加GridView组件,通常是在布局文件中添加* * GridView组件支持的XML属性有如下几个:* 1.android:columnWidth 用于设置列的宽度* 2.android:gravity  用于设置对齐方式* 3.android:horizontalSpacing  用于设置各个元素之间的水平间距* 4.android:numColumns  用于设置列数,其属性值通常大于1* 5.android:stretchMode  用于设置拉伸模式* 6.android:verticalSpacing  用于设置各个元素之间的垂直间距* * GridView与ListView类似,都需要通过Adapter来提供要显示的数据,在使用GridView组件时,* 通常使用SimpleAdapter或者BaseAdapter类为GridView组件提供数据。*/private GridView mGridView01; private String[] mGames1,mGames2;private ArrayAdapter<Object> aryAdapter1; /** Called when the activity is first created. */@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 4个字符串数组 */ mGames1 = new String[] { getResources().getString(R.string.str_list1), getResources().getString(R.string.str_list2), getResources().getString(R.string.str_list3), getResources().getString(R.string.str_list4)};/* 9个字符串数组 */ mGames2 = new String[] { getResources().getString(R.string.str_list1), getResources().getString(R.string.str_list2), getResources().getString(R.string.str_list3),getResources().getString(R.string.str_list4), getResources().getString(R.string.str_list1),getResources().getString(R.string.str_list2),getResources().getString(R.string.str_list3), getResources().getString(R.string.str_list4), getResources().getString(R.string.str_list1) };mButton01 = (Button)findViewById(R.id.myButton1); mButton02 = (Button)findViewById(R.id.myButton2); mGridView01 = (GridView)findViewById(R.id.myGridView1);mTextView01 = (TextView)findViewById(R.id.myTextView1);mButton01.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /* 4个元素,以2栏方式呈现(2x2) */ mGridView01.setNumColumns(2);aryAdapter1 = new ArrayAdapter<Object>(EX04_18.this, R.layout.simple_list_item_1_small,mGames1); mGridView01.setAdapter(aryAdapter1); //mGridView01.setScrollBarStyle(DEFAULT_KEYS_DIALER); //        Sets the currently selected itemmGridView01.setSelection(2);mGridView01.refreshDrawableState(); } });mButton02.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub /* 9个元素,以3栏方式呈现(3x3) */ mGridView01.setNumColumns(3);aryAdapter1 = new ArrayAdapter<Object>(EX04_18.this,R.layout.simple_list_item_1_small,mGames2);mGridView01.setAdapter(aryAdapter1); } });mGridView01.setOnItemClickListener(new GridView.OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> parent, View v, int position, long arg3){// TODO Auto-generated method stub /* 判断Adapter里的元素个数,判断被点选的是第几个元素名称 */ switch(aryAdapter1.getCount()) {case 4: /* position为GridView里的元素索引值 */ mTextView01.setText(mGames1[position]); break;case 9:mTextView01.setText(mGames2[position]); break; } } });}}

Android--GridView实现动态文字排版相关推荐

  1. 安卓控件大小动态文字排版_动态Web排版:爆炸文字

    安卓控件大小动态文字排版 Lately I've been interested in creating motion typography for the web. Making shattered ...

  2. android中gridview实现动态表格,Android--GridView实现动态文字排版

    一.一个在平面上可显示多个条目的可滚动的视图组件,该组件中的条目通过一个ListAdapter和该组件进行关联.比如android手机中显示的应用: 比如实现九宫格图,用GridView是首选,也是最 ...

  3. android 字体跳动,【Android学习】动态文字闪动效果

    在学安卓之前有在其他网站上看到闪动文字的自定义控件,感觉很炫酷,高大上. 直到我看了<Android群英传>,这本书真不错,强烈推荐. 新手进阶很有帮助. 效果: 书中原文: 利用Pain ...

  4. 550+超强动态文字动画AE模板(标题,字幕,标注,对话)等视频制作元素

    模板信息: 550 多种完全可定制的动态文字排版.标题.字幕条.订阅提示.点赞等视频制作元素 After Effects CC 或更高版本 所有场景 4K 分辨率 无需插件 包括视频教程 完全色彩控制 ...

  5. android仿微信发布动态功能,Android GridView扩展仿微信微博发图动态添加删除图片功能.pdf...

    Android GridView扩扩展展仿仿微微信信微微博博发发图图动动态态添添加加删删除除图图片片功功能能 这篇文章主要为大家详细介绍了Android GridView扩展仿微信微博发图动态添加删除 ...

  6. android 打开微信好友动态图片,Android GridView仿微信朋友圈显示图片

    最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路: 1 ...

  7. Android开发-优雅的实现动态图片排版(类似微信图片展示效果)

    介绍 效果展示 说明 上面的图片排版 - 实现了动态布局,针对不同图片的数量展示不同的排版布局.效果类似微信朋友圈的图片排版,效果略有不同. - 正方形的图片控件,高度会随着宽度一起变化. 实现这样的 ...

  8. android 阴影背景显示文字_公众号排版如何做出“果冻”文字效果?

    公众号文字排版已经很难做出什么特别出彩的设置了,但我们依然可以在有限的编辑功能中实现无限的创意. 大家惯常使用的文字颜色设置基本离不开阴影色和背景色两种,除了这两种,今天还想介绍一种新玩法:独家果冻文 ...

  9. Android图片海报制作-自定义文字排版控件组件

    项目地址:https://github.com/coolstar1204/MakePoster 今天主要讲一下项目主要控件,文字排版控件组,实现类似QQ音乐歌词海报效果. 控件主要功能点 可设置背景图 ...

最新文章

  1. 空域滤波算法对比分析(超级全面哒)——Python代码
  2. CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)
  3. 20181023-2 贡献分配
  4. 《algorithm-note》算法笔记中文版正式发布!
  5. JZOJ5906 传送门
  6. DDR线长匹配与时序
  7. string基本字符系列容器
  8. activiti页面展示流程图乱码_activiti 5.17 流程图中文乱码问题
  9. @Component和@Configuration作为配置类的差别
  10. c语言xuanzeti1,c语言选择题库1
  11. 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
  12. Object类中的主要结构
  13. 如何通过Geth、Node.js和UNIX/PHP访问以太坊节点 1
  14. android框架揭秘!连续四年百度Android岗必问面试题!实战篇
  15. 让人头疼的吃鸡外挂,一起来逆向分析一波
  16. asp.net mvc 图片裁剪上传
  17. Excel两行交换及两列交换,快速互换相邻表格数据的方法
  18. ubuntu终端英文乱码问题
  19. 信息系统分析与设计 机票预定管理系统
  20. golang压缩图片

热门文章

  1. 基于DDD的.NET开发框架 - ABP领域服务
  2. (1)java虚拟机概念和结构图
  3. Yeslab安全实验室CCNP Security PPT到货
  4. 汇编-理解call,ret
  5. 如何通过netstat命令判断是否遭受Dos功击?遭到DDoS该如何缓解?
  6. DeepFake疑遭审查
  7. 笔记react router 4(三)
  8. SEO优化:网站优化的五大步骤
  9. 用户与IoT同享一个WLAN时:弹性至关重要
  10. 检测数(二进制形式)中1的个数