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

GridView, ListView 区别的更多相关文章

  1. 重新想象 Windows 8.1 Store Apps (93) - 控件增强: GridView, ListView

    [源码下载] 重新想象 Windows 8.1 Store Apps (93) - 控件增强: GridView, ListView 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...

  2. Activity中与ListActivity中使用listview区别

    Activity中与ListActivity中使用listview区别 一.Activity中与ListActivity中使用listview区别(本身没多大区别,只是ListActivity在lis ...

  3. Android开发:自定义GridView/ListView数据源

    http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮 ...

  4. GridLayout和GridView的区别

    GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填 ...

  5. 取消GridView/ListView item被点击时的效果 记录学习

    方法一,在控件被初始化的时候设置 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(ne ...

  6. Android中取消GridView & ListView默认的点击背景色

    方法一: gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(new ColorDrawa ...

  7. 取消GridView/ListView item被点击时的效果

    方法一,在控件被初始化的时候设置 ? 1 2 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelec ...

  8. Android-取消GridView/ListView item被点击时的效果

    方法一,在控件被初始化的时候设置 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); listView.setSelector(ne ...

  9. android中ScrollView和GridView/ListView共存时,ScrollView不在顶部的解决方法

    listView.setFocusable(false); gridView.setFocusable(false); 这个必须在代码中写,xml文件中设置不起作用 原文:http://stackov ...

随机推荐

  1. React学习笔记4

    遇到的问题 目前模板是自己任意定义的,样式不好控制 在组件设计时,可以把页面数据显示的地方,分割父子组件嵌套的结构,比如,商品数据显示列表,把组外层容器看成是父组件,里面是数据显示的渲染模板,看成是子 ...

  2. android MVP模式简单介绍

    原文 http://zhengxiaopeng.com/2015/02/06/Android%E4%B8%AD%E7%9A%84MVP/ 前言 MVP作为一种MVC的演化版本在Android开发中受到 ...

  3. kali 插耳机没声音

    打开终端,然后输入命令:下载pulseaudio音量控制软件: apt install pavucontrol 然后终端输入指令:pavucontrol打开软件,发现在输出设备中有两个输出设备:一个N ...

  4. linux下vim python代码自动补全

    一.vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.p ...

  5. 【bzoj1022】[SHOI2008]小约翰的游戏John 博弈论

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...

  6. 通用动态树(Link-Cut Tree)模板

    一个没有维护任何东西的动态树模板 忘了怎么写可以直接来粘 int ch[300010][2], fa[300010], st[300010]; bool lazy[300010]; bool nroo ...

  7. SDUT OJ 顺序表应用6:有序顺序表查询

    顺序表应用6:有序顺序表查询 Time Limit: 1000 ms Memory Limit: 4096 KiB Submit Statistic Discuss Problem Descripti ...

  8. (C/C++) 基本排序法

    C++ Class 宣告 class Sort{ private: void Merge(int *arr, int front, int mid, int end); int Partition(i ...

  9. AR资料汇总学习

    ARKit 从入门到精通 http://www.chinaar.com/ARKit/5210.html ARKit 框架的学习 http://blog.csdn.net/biangabiang/art ...

  10. 【语义分割】large kernel matters中GCN模块的pytorch实现

    GCN模块的实现比较简单,在giuhub上看到两种实现,轻微不同 实现一:https://github.com/ycszen/pytorch-segmentation/blob/master/gcn. ...