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

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

0818b9ca8b590ca3270a3433284dd417.png

比如实现九宫格图,用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

下面是实现的截图:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

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

1.两个布局文件的定义

主程序界面

xmlns: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"

>

android:id="@+id/myTextView1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

android:textColor="#00ff00"

/>

android:id="@+id/myGridView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:numColumns="5"

/>

android:orientation="horizontal"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

android:id="@+id/myButton1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/str_button1" />

android:id="@+id/myButton2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/str_button2" />

GridView中文字的样式

xmlns: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 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(

EX04_18.this,

R.layout.simple_list_item_1_small,

mGames1

);

mGridView01.setAdapter(aryAdapter1);

//mGridView01.setScrollBarStyle(DEFAULT_KEYS_DIALER);

// Sets the currently selected item

mGridView01.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(

EX04_18.this,

R.layout.simple_list_item_1_small,

mGames2

);

mGridView01.setAdapter(aryAdapter1);

}

});

mGridView01.setOnItemClickListener(new GridView.OnItemClickListener()

{

@Override

public 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;

}

}

});

}

}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值