前言html
本章内容是android.widget.AbsListView,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎你们访问他的博客:http://android.toolib.net/blog/,再次感谢"cnmahj"!欢迎你一块儿参与Android的中文翻译,联系我over140@gmail.com。
java
声明android
欢迎转载,但请保留文章原始出处:)
canvas
农民伯伯:http://over140.blog.51cto.com/缓存
Android中文翻译组: http://goo.gl/6vJQl
AbsListView编辑器
译者署名: cnmahjide
译者连接: http://android.toolib.net/blog/函数
版本:Android 2.3 r1布局
结构测试
继承关系
public abstract class AbsListView extends AdapterView <T extends Adapter>
implements TextWatcher ViewTreeObserver.OnGlobalLayoutListener ViewTreeObserver.OnTouchModeChangeListener Filter.FilterListener
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.AdapterView<T extends android.widget.Adapter>
android.widget.AbsListView
类概述
用于实现条目的虚拟列表的基类. 这里的列表没有空间的定义。 例如,该类的子类能够以网格的形式、走马灯的形式显示,或者做为堆栈等等。
嵌套类
class AbsListView.LayoutParams
AbsListView 扩展了 LayoutParams 以提供空间来保存试图类型。
interface AbsListView.OnScrollListener
为了在列表或网格滚动时执行回调函数而定义的接口。
interface AbsListView.RecyclerListener
RecyclerListener 是用于接收视图被移动到待回收堆中时的消息的监听器.
XML属性
属性名称 |
描述 |
android:cacheColorHint |
指示该列表老是在固定的单色、不透明的背景下绘制。这容许列表优化其绘制过程 |
android:drawSelectorOnTop |
若是设为真,选择器将绘制在选中条目的上层。不然绘制在下层。默认为假 |
android:fastScrollEnabled |
容许使用快速滚动滑块,能够经过拖动该滑块在列表中快速滚动 |
android:listSelector |
用于在列表中指示当前选中条目的可绘制对象 |
android:scrollingCache |
当为真时,列表滚动使用绘图缓存。该选项使渲染更快,但占用更多的内存。 默认值为真 |
android:smoothScrollbar |
为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。 默认该属性为真,若是你的适配器须要绘制可变高的条目,他应该设为假。 当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的 过程当中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的 可见条目来决定滚动条的属性 |
android:stackFromBottom |
用于 ListView 和 GridView,指示他们的内容栈从底部开始 |
android:textFilterEnabled |
设为真时,列表会过滤根据用户的要求,过滤结果集。列表的适配器必须实现了 Filterable 接口,才能使其可用 |
android:transcriptMode |
设置列表的跳转模式。在跳转模式下,当加入新条目时,列表会滚动到底部, 使新条目可见 |
常量
int TRANSCRIPT_MODE_ALWAYS_SCROLL
无视当前可见条目,老是自动滚动到列表的底部。
int TRANSCRIPT_MODE_DISABLED
禁用跳转模式。
int TRANSCRIPT_MODE_NORMAL
仅当最后的条目在屏幕上可见,而且收到数据集变动消息时列表将自动滚动到底部。
公共方法
public void addTouchables (ArrayList<View> views)
想views添加可触控视图,该可触控视图是该视图的后代(若是该视图可触控, 也能够添加该视图)。
参数
views 如今为止的可触控视图。
public void afterTextChanged (Editable s)
为关联到文本过滤器的文本监视器准备的。什么也不作。
public void beforeTextChanged (CharSequence s, int start, int count, int after)
为关联到文本过滤器的文本监视器准备的。什么也不作。
public boolean checkInputConnectionProxy (View view)
测试是否为了过滤信息,为文本编辑器使用了输入链接代理,该操做容许使用代理。
参数
view 生成InputMethodManager调用的视图。
返回值
容许调用返回true,拒绝返回false。
public void clearTextFilter ()
清楚文本过滤器。
public void draw (Canvas canvas)
在指定的画布上手动绘制视图(及其子视图). 调用该函数以前,视图必须已经完成整个布局过程。 当实现一个视图时,不须要继承这个方法;而是实现onDraw(Canvas)方法。
参数
canvas 要绘制视图的画布
public AbsListView.LayoutParams generateLayoutParams (AttributeSet attrs)
返回一组基于提供的属性集合的布局参数集合.
参数
attrs 用于生成布局参数的属性集.
返回值
ViewGroup.LayoutParams 或其子类的实例.
public int getCacheColorHint ()
若是该值为非零,表示该视图老是在固定的、单色、不透明的背景上绘制。
返回值
缓存颜色。
public void getFocusedRect (Rect r)
在视图拥有焦点时,用户将焦点移向其余视图,可使用该方法取得下一个视图的 矩形填充区域。 默认状况,该矩形为视图的 getDrawingRect(Rect)。固然,若是你的视图维护着 内部选中状态,好比游标、选中的行或列,你应该重写该方法,并返回特定的矩形。
参数
r 要填充的矩形,使用视图的坐标系。
public int getListPaddingBottom ()
列表内边距是普通视图内边距和选择器内边距的最大值。
返回值
列表底部的内边距。
参见
public int getListPaddingLeft ()
列表内边距是普通视图内边距和选择器内边距的最大值。
返回值
列表左侧的内边距。
参见
public int getListPaddingRight ()
列表内边距是普通视图内边距和选择器内边距的最大值。
返回值
列表右侧的内边距。
参见
public int getListPaddingTop ()
列表内边距是普通视图内边距和选择器内边距的最大值。
返回值
列表顶部的内边距。
参见
public View getSelectedView ()
返回值
当前选中条目对应的视图;无选中条目时返回空。
public Drawable getSelector ()
返回用于在列表中绘制选择器的 可绘制对象。
返回值
用于显示选择器的可绘制对象。
public int getSolidColor ()
若是你的视图老是在单色背景上绘制,而且须要渐变的边时,重载该函数。 返回非零的颜色值,使视图系统能够优化渐进边的绘制。返回非零颜色值时, 阿尔法通道应设为 0xFF。
返回值
该视图的单色背景色;为零表示不是单色。
public CharSequence getTextFilter ()
若是存在,则返回列表的文本过滤器。
返回值
文本的列表过滤器;若是过滤器未启用返回空。
public int getTranscriptMode ()
返回当前跳转模式。
返回值
TRANSCRIPT_MODE_DISABLED
、TRANSCRIPT_MODE_NORMAL
或者TRANSCRIPT_MODE_ALWAYS_SCROLL
public boolean hasTextFilter ()
返回列表视图是否具备文本过滤器。
public void invalidateViews ()
使全部的视图从新构建并重绘。
public boolean isFastScrollEnabled ()
返回当前快速滚动特性的状态。
返回值
若是快速滚动已启用返回真,不然返回假。
参见
setFastScrollEnabled(boolean)
public boolean isScrollingCacheEnabled ()
指示滚动时是否使用子视图的绘图缓存。默认为使用绘图缓存,这会占用更多的内存。
返回值
若是启用了滚动缓存返回真,不然返回假。
参见
setScrollingCacheEnabled(boolean)
setDrawingCacheEnabled(boolean)
public boolean isSmoothScrollbarEnabled ()
返回平滑滚动特性的当前状态。
返回值
若是平滑滚动启用返回真,不然返回假。
参见
setSmoothScrollbarEnabled(boolean)
public boolean isStackFromBottom ()
指示该视图的内容是否为向上插入,或者说栈底在底边。
返回值
若是该视图内容以底边为栈底返回真,不然返回假。
public boolean isTextFilterEnabled ()
指示该视图是否启用了输入过滤。
返回值
如启用了输入过滤则为真,不然为假。
参见
setTextFilterEnabled(boolean)
Filterable
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
返回用于编辑过滤文本的 InputConnection 对象。
参数
outAttrs 连接使用的属性信息。
public void onFilterComplete (int count)
过滤操做结束的通知。
参数
count 过滤结果的数量
public void onGlobalLayout ()
视图树的可视性或全局布局状态发生变化时执行的回调函数。
public boolean onInterceptTouchEvent (MotionEvent ev)
使用此方法能够拦截全部触摸屏动做引起的事件.这意味着你能够监视分派给子项的事件, 而且能够在当前手势的任何一点得到其控制权。
使用此方法需谨慎.由于它与 View.onTouchEvent(MotionEvent) 有至关复杂的交互。使用它须要像该方法实现同样正确的实现该方法。触控事件是按以下顺序接收的:
* 首先该函数收到按下事件
* 按下事件会在视图组的子视图以及本视图的 onTouchEvent()方法中处理. 这意味着若要处理以后的手势(代替父视图来处理该事件),你应该实现 onTouchEvent() 方法并返回真.另外,若是你的onTouchEvent() 方法返回真, onInterceptTouchEvent() 方法将不会收到接下来发生的事件, 整个触控处理必须在 onTouchEvent() 方法中进行.
* 若是该方法返回假,接下来的每一个事件(直到最后的抬起事件) 都会首先由该函数来处理,以后传给目标对象的 onTouchEvent() 方法.
* 若是该函数返回真,你不会收到接下来的任何事件: 目标视图会接收到该事件,但其动做被标记为 ACTION_CANCEL,以后的事件都会交由你的 onTouchEvent() 方法来处理,再也不出如今该方法中。
参数
ev 沿着层次结构向下分派的动做事件。
返回值
若将动做事件从子视图中截获并经过 onTouchEvent() 将他们分派给当前视图组,则返回真。当前目标将收到 ACTION_CANCEL 事件,而且再也不会有其余消息传入该函数。
public boolean onKeyDown (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyMultiple() 的默认实现. 若是视图可用并可按, 当按下 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 时执行视图的按下事件。
参数
keyCode 表示按下的键的、在 KEYCODE_ENTER 中定义的键盘代码。
event KeyEvent 对象,定义了按钮动做。
返回值
若是处理了事件,返回真。若是容许下一个事件接受器处理该事件,能够返回假。
public boolean onKeyUp (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyMultiple() 的默认实现. 当释放 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 时执行视图的单击事件。
参数
keyCode 表示按下的键的、在 KEYCODE_ENTER 中定义的键盘代码。
event KeyEvent 对象,定义了按钮动做。
返回值
若是处理了事件,返回真.若是容许下一个事件接受器处理该事件,能够返回假。
public void onRestoreInstanceState (Parcelable state)
容许视图从新应用以前由 onSaveInstanceState() 保存的内部状态的回调函数。该方法得 state 参数不可能为空。
参数
state 以前由 onSaveInstanceState() 返回的状态信息。
public Parcelable onSaveInstanceState ()
容许视图保存其内部状态的回调函数,以便于以后使用相同状态建立新实例. 该状态应该只包含非持久的或者以后不可重现的信息.例如,你不能保存视图在屏幕上的位置, 由于在建立新视图时,会在视图得层次结构中从新计算它的位置。
这里是一些能够保存的信息的例子:文本框中当前光标的位置(一般不是文字内容自己, 由于文字内容通常保存在内容提供者或其余持久的储存器中),列表视图中的当前选中条目等等。
返回值
返回包含视图当前状态的 Parcelable 对象,当不想保存状态时返回空。默认实现返回空。
public void onTextChanged (CharSequence s, int start, int before, int count)
为关联到文本过滤器的文本监视器准备的。当文本变动时,执行实际的过滤操做, 并维护弹出显示中的当前输入的过滤文本隐藏和显示。
public boolean onTouchEvent (MotionEvent ev)
实现该方法来处理触屏事件。
参数
ev 触屏事件.
返回值
若是事件已经处理返回真;不然返回假。
public void onTouchModeChanged (boolean isInTouchMode)
触摸模式发生改变时调用的回调函数。
参数
isInTouchMode 若是视图结构当前处于触摸模式,参数为真;不然为假。
public void onWindowFocusChanged (boolean hasWindowFocus)
包含该视图的窗体得到或失去焦点时调用该函数。注意,该动做是与视图的焦点 分开的:为了受到键盘事件,你的视图及其窗口都必须拥有焦点。若是有窗口 覆盖在你的窗口上方并获得输入焦点,你的窗口会失去焦点,可是视图的焦点 保持不变。
参数
hasWindowFocus 若是包含该视图的窗口拥有焦点,值为真;不然为假。
public int pointToPosition (int x, int y)
将坐标点转换为列表中的位置。
参数
x 本地坐标系的 X。
y 本地坐标系的 Y。
返回值
包含指定点的条目的位置,若是点再也不任何条目上返回 INVALID_POSITION。
public long pointToRowId (int x, int y)
将坐标点转换为列表条目的行ID。
参数
x 本地坐标系的 X。
y 本地坐标系的 Y。
返回值
包含指定点的条目的条目的行ID;若是点再也不任何条目上返回 INVALID_ROW_ID。
public void reclaimViews (List<View> views)
将该 AbsListView 中的全部视图(不包含头尾视图)移到提供的列表中。 这些视图包括显示在屏幕上的以及放入 AbsListView 内部视图回收器的视图。
参数
views 用于填充视图的列表。
public void requestLayout ()
当某些变动致使视图的布局失效时调用该方法.该方法按照视图树的顺序调用。
public void setCacheColorHint (int color)
当color的值不为0时,此值表示的颜色将提示使用者,列表正在一片单色不透明的背景上被画出。 当 color 的值非零时,示意该列表使用实心、单色不透明的背景,能够缓存背景色。
参数
color 背景色。
public void setDrawSelectorOnTop (boolean onTop)
控制选择高亮可绘制对象应该在条目的前面绘制仍是在后面绘制。
参数
onTop 若是为真,选择器的高亮在条目上面显示。默认值为假。
相关 XML 属性
android:drawSelectorOnTop
public void setFastScrollEnabled (boolean enabled)
容许使用快速滚动手柄,能够经过拖动该手柄在列表中快速滚动。 若要显示字母预览并在其间跳转,与列表关联的适配器应该实现 SectionIndexer 接口。
参数
enabled 是否容许快速滚动。
参见
SectionIndexer
isFastScrollEnabled()
public void setFilterText (String filterText)
为文本过滤器设置初始值。
参数
filterText 过滤器使用的文本。
参见
setTextFilterEnabled(boolean)
public void setOnScrollListener (AbsListView.OnScrollListener l)
设置每次列表滚动时收到消息的监听器。
参数
l 滚动监听器。