`

GridView, ListView

阅读更多
ListView, GridView部分的类层次结构


AbsListView的xml属性
android:listSelector
当前item高亮时,显示的drawable


android:drawSelectorOnTop
是否将selector显示在item的上方


android:fastScrollEnabled
是否启动快速滚动。


android:cacheColorHint
缓存颜色提示。它的值是一个颜色值,如#FFF,#FFFFFF等。
【注意:最好要将这个属性设为@null或这与你背景颜色相同,不然你会看到意想不到的情况,后面有介绍】
设置该值时,就提示列表,现在是绘制在一个纯色的、不透明的背景上的,以让列表优化绘制。

android:scrollingCache
是否使用滚动缓存。
设为true时,会在滚动过程中使用一个drawing cache,这样能使绘制变得更快,但会使用更多的内存。
设为false时,就是不使用缓存。

android:smoothScrollbar
是否平滑滚动条。
设为true时,会更以更精确的方式计算滚动条大小,并且在滚动的过程中,实时的会对滚动条的大小进行计算。(所以如果各条数据的高度不一致时,会很耗性能,最好设为false)。
设为false时,以粗略的方式来计算滚动条的大小(根据当前有多少条数据)。

android:stackFromBottom
是否将内容从最后一个显示到第一个,并将滚动条放在最底部。

android:transcriptMode
改写模式,它的值可以为disabled,normal,alwaysScroll
disabled时,在adapter的内容发生改变时,滚动条不发生变化
normal时,当收到notifyDataSetChanged等提示时,只有内容发生改变时(例如增加了一个条目),滚动条会自动滚到底部
alwaysScroll,当收到notifyDataSetChanged等提示时,不管内容改不改变,滚动条都将滚至底部

android:textFilterEnabled
是否启用内容过滤。设为true时,会根据当前输入的文本,对列表内容进行过滤。

android:cacheColorHint可能会引起的问题
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	android:background="#0F0"
	android:paddingTop="20dp"
>		
	<ListView
		android:id="@+id/listview1"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent" />
</LinearLayout>

【注意:布局的背景色是绿色,有20dp的padding,ListView没有设置android:cacheColorHint。意外就是拖动时,会出现黑色背景】

引起这个的主要原因就是:
默认的ListItem背景是透明的,它在滚动的过程中会与android:cacheColorHint的颜色值进行混合,在黑色主题下默认的颜色值是#191919。
解决解决办法就是将其设为透明或者与背景相同的颜色
android:cacheColorHint="@null"



GridView
xml属性
android:columnWidth
列宽(一般与numColumns="auto_fit"配合使用,如果numColumns设置为具体的值时,其不起作用)

android:gravity
item在item container中如何放置(类似于TextView的gravity是决定text如何在TextView中如何放置)。

android:horizontalSpacing
水平空白

android:numColumns
列数。其值可以是具体值(如:100dp),也可以值auto_fit(根据GridView的宽度以及columnWidth来确定列数)

android:stretchMode
缩放模式。其值可以为:none, spacingWidth, columnWidht, spacingWidthUniform

android:verticalSpacing
垂直空白

GridView其实也可以表现的像ListView,只要将其列设为1列
使用ArrayAdapter的GridView

R.layout.activity_gridview_use
<merge
	xmlns:android="http://schemas.android.com/apk/res/android">
	<GridView
			android:id="@+id/gridview"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent"
			android:numColumns="auto_fit"
			android:columnWidth="100dp" 
			android:horizontalSpacing="20dp"
			android:verticalSpacing="20dp" />
</merge>		
		
		
public class GridViewUse extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gridview_use);
		GridView gridView = (GridView) findViewById(R.id.gridview);
		ArrayAdapter<String> gridAdapter = new ArrayAdapter<String>(getApplicationContext(),
				android.R.layout.simple_list_item_1, android.R.id.text1);
		gridAdapter.add("one");
		gridAdapter.add("two");
		gridAdapter.add("three");
		gridAdapter.add("four");
		gridAdapter.add("five");
		gridView.setAdapter(gridAdapter);
	}
}

使用SimpleAdapter的GridView
R.layout.item_image_text
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:orientation="vertical"
>
	<ImageView
	    android:id="@+id/image"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:scaleType="fitCenter" />
	
	<TextView
	    android:id="@+id/text"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:textColor="#FFF" />
</LinearLayout>


private static final String[] FROM = {"image", "text"};
private static final int[] TO = {R.id.image, R.id.text};
private static final List<HashMap<String, Object>> DATA = 
		new ArrayList<HashMap<String, Object>>();
	
public class GridViewUse extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_gridview_use);
		GridView gridView = (GridView) findViewById(R.id.gridview);
		HashMap<String, Object> item;
		// item1
		item = new HashMap<String, Object>();
		item.put("image", R.drawable.ic_launcher);
		item.put("text", "item1");
		DATA.add(item);
		// item2
		item = new HashMap<String, Object>();
		item.put("image", R.drawable.ic_launcher);
		item.put("text", "item2");
		DATA.add(item);
		// item3
		item = new HashMap<String, Object>();
		item.put("image", R.drawable.ic_launcher);
		item.put("text", "item3");
		DATA.add(item);
		
		SimpleAdapter gridAdapter = new SimpleAdapter(getApplicationContext(), DATA, 
				R.layout.item_image_text, FROM, TO);
		gridView.setAdapter(gridAdapter);
	}
}





ListView
xml属性
android:choiceMode
选择行为的设置。可以设置的值none(默认),singleChoice(一个数据可以处于选中状态),multipleChoice(多个数据可以处于选中状态)

android:divider
数据间的分隔线。颜色或drawable

android:dividerHeight
分隔线的高度。

android:entries
列表的数据。值为一个数组资源值。

android:footerDividersEnabled
footer view间是否使用分隔线

android:headerDividersEnabled
header view间是否使用分隔线



其他参考
ListView应该注意的地方:http://gundumw100.iteye.com/blog/1169065
  • 大小: 6.8 KB
  • 大小: 7.4 KB
  • 大小: 2.9 KB
  • 大小: 7.3 KB
  • 大小: 8.2 KB
  • 大小: 17.9 KB
  • 大小: 3.5 KB
分享到:
评论

相关推荐

    Android 下拉刷新 上拉加载更过 GridView ListView ScorllView

    在Android应用开发中,"下拉刷新"和"上拉加载更多"是常见的用户体验功能,尤其是在数据列表展示中,如GridView、ListView和ScrollView等。这些功能使得用户在滚动到列表顶部时可以更新内容(下拉刷新),而在滚动到...

    GridView ListView等 上拉刷新,下拉加载

    在Android开发中,GridView、ListView和ScrollView是常用的布局控件,用于展示大量数据。而“上拉刷新,下拉加载”功能则是现代移动应用中不可或缺的一部分,它提升了用户体验,允许用户在滚动到底部时加载更多内容...

    ListView嵌套GridView

    在Android开发中,ListView和GridView是两种常用的列表控件,它们可以用来展示大量的数据并提供良好的用户体验。当我们在设计一个类似新浪微博或陌陌客户端的界面时,常常会遇到需要在一个ListView中嵌套GridView的...

    Android万能GridView和ListView

    在Android开发中,GridView和ListView是两种常用的布局控件,它们用于展示大量数据,并且可以进行滚动操作。这两个控件都是AdapterView的子类,因此它们的数据管理方式都是通过Adapter来实现的。在这个项目中,我们...

    listview和gridview下拉刷新,上拉加载更多

    在Android开发中,ListView和GridView是两种常用的列表控件,用于展示大量的数据。"下拉刷新"和"上拉加载更多"是这两种控件在实际应用中的重要功能,旨在提升用户体验,使用户能够方便地获取最新的数据或者查看更多...

    横向滑动菜单gridview+listview

    在给定的标题“横向滑动菜单gridview+listview”中,我们可以理解到这个实现是将GridView和ListView结合,创建了一个可横向滑动的菜单系统。这种设计可以有效地展示大量数据,并且通过监听用户的操作来触发相应的...

    ListView嵌套GridView以及ListVIew嵌套ListVIew

    然而,有时我们的界面设计需要更复杂的布局,比如在一个ListView项中嵌套另一个GridView,或者一个ListView内再嵌套另一个ListView来实现时间轴效果。这涉及到Android UI设计中的自定义适配器和视图复用技术。 首先...

    GridView和ListView的布局实现

    GridView和ListView的布局实现 GridView和ListView的布局实现 GridView和ListView的布局实现 GridView和ListView的布局实现 GridView和ListView的布局实现 GridView和ListView的布局实现

    Listview嵌套Gridview-demo

    在Android开发中,ListView和GridView是两种常用的布局控件,用于展示大量的数据。ListView以其滚动性能和节省内存的特性,常用于长列表的显示;而GridView则以网格形式展示数据,适合图片或小图标为主的布局。当...

    GridView图片墙,ListView嵌入GridView

    GridView图片墙,ListView嵌入GridView

    listview中嵌套gridview

    在Android开发中,ListView和GridView是两种常用的布局控件,它们用于展示大量数据。ListView以其垂直滚动和可自定义项视图的特点,而GridView则以网格形式排列元素,适合显示多列、等宽或等高的内容。当需要在一个...

    Android-使用RecyclerView实现GridView和ListView混排的效果

    在Android应用开发中,RecyclerView是取代ListView和GridView的现代组件,它提供了更高的性能和更灵活的布局管理。本文将深入探讨如何使用RecyclerView实现GridView和ListView混排的效果,这对于创建复杂和自定义的...

    listView 嵌套gridView android

    在Android开发中,ListView和GridView是两种常用的布局控件,分别用于展示长列表和多列网格数据。ListView具有良好的滚动性能,适合展示大量数据,而GridView则常用于展示图片、小图标等,形成整齐的网格布局。当...

    gridview+listview调用本机相册文件夹分别展示

    在Android开发中,GridView和ListView是两种常用的布局控件,用于展示数据集合。在这个项目"gridview+listview调用本机相册文件夹分别展示"中,开发者旨在利用这两个控件来显示用户设备上的相册文件夹中的图片。下面...

    解决scrollView和gridView和ListView嵌套的冲突

    在Android开发中,ScrollView、GridView和ListView是常用的布局组件,它们各自有特定的用途。然而,当这些组件被嵌套使用时,可能会遇到一些问题,尤其是冲突问题。本篇文章将详细探讨如何解决ScrollView与GridView...

    listView嵌套GridView的demo

    在Android开发中,ListView和GridView是两种常用的列表控件,它们可以用来展示大量数据并进行交互。当需要在一个列表项中展示多个子项时,就会用到ListView嵌套GridView的布局方式。本示例提供了“listView嵌套...

    Android SimpleAdapter的多种显示GridView/ListView

    在Android开发中,SimpleAdapter是一种常用的适配器,它用于将数据绑定到视图上,如GridView或ListView。这些组件是Android中展示列表数据的主要方式,适用于创建各种类型的列表应用。下面将详细介绍如何使用...

    ListView嵌套GridView解决方案

    在Android开发中,ListView和GridView是两种常用的列表控件,它们用于展示大量数据。ListView以其垂直滚动特性,适合展示一维列表,而GridView则通过网格布局展现二维数据。然而,在某些场景下,我们可能需要在一个...

    Android Activity在GridView和ListView之间切换使用一个布局实现的方法

    当需要在GridView和ListView之间切换以显示相同的数据集时,可以利用同一个布局和适配器(Adapter)来达到目的,从而提高代码复用和效率。下面我们将深入探讨如何实现这一功能。 1. **布局设计**: 在XML布局文件...

    android的listview和gridView的例子

    在Android开发中,ListView和GridView是两种非常常用的控件,它们用于展示大量数据,并且具有良好的滚动性能。这两个组件在用户界面设计中扮演着至关重要的角色,尤其在展示列表或网格形式的数据时。本篇文章将深入...

Global site tag (gtag.js) - Google Analytics