?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
AbsListView
版本:Android 2.3 r1
?
結(jié)構(gòu)
繼承關(guān)系
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
?
類概述
用于實(shí)現(xiàn)條目的虛擬列表的基類. 這里的列表沒有空間的定義。 例如,該類的子類可以以網(wǎng)格的形式、走馬燈的形式顯示,或者作為堆棧等等。
?
嵌套類
???????? class ?????? AbsListView.LayoutParams ?
AbsListView 擴(kuò)展了 LayoutParams 以提供空間來保存試圖類型。
?
interface ???????? AbsListView.OnScrollListener ???????
為了在列表或網(wǎng)格滾動(dòng)時(shí)執(zhí)行回調(diào)函數(shù)而定義的接口。
?
interface ???????? AbsListView.RecyclerListener
RecyclerListener 是用于接收視圖被移動(dòng)到待回收堆中時(shí)的消息的監(jiān)聽器.
?
XML屬性
屬性名稱 |
描述 |
android:cacheColorHint |
指示該列表總是在固定的單色、不透明的背景下繪制。這允許列表優(yōu)化其繪制過程 |
android:drawSelectorOnTop |
如果設(shè)為真,選擇器將繪制在選中條目的上層。否則繪制在下層。默認(rèn)為假 |
android:fastScrollEnabled |
允許使用快速滾動(dòng)滑塊,可以通過拖動(dòng)該滑塊在列表中快速滾動(dòng) |
android:listSelector |
用于在列表中指示當(dāng)前選中條目的可繪制對(duì)象 |
android:scrollingCache |
當(dāng)為真時(shí),列表滾動(dòng)使用繪圖緩存。該選項(xiàng)使渲染更快,但占用更多的內(nèi)存。 默認(rèn)值為真 |
android:smoothScrollbar |
為真時(shí),列表會(huì)使用更精確的基于條目在屏幕上的可見像素高度的計(jì)算方法。 默認(rèn)該屬性為真,如果你的適配器需要繪制可變高的條目,他應(yīng)該設(shè)為假。 當(dāng)該屬性為真時(shí),你在適配器在顯示變高條目時(shí),滾動(dòng)條的把手會(huì)在滾動(dòng)的 過程中改變大小。當(dāng)設(shè)為假時(shí),列表只使用適配器中的條目數(shù)和屏幕上的 可見條目來決定滾動(dòng)條的屬性 |
android:stackFromBottom |
用于 ListView 和 GridView,指示他們的內(nèi)容棧從底部開始 |
android:textFilterEnabled |
設(shè)為真時(shí),列表會(huì)過濾根據(jù)用戶的要求,過濾結(jié)果集。列表的適配器必須實(shí)現(xiàn)了 Filterable 接口,才能使其可用 |
android:transcriptMode |
設(shè)置列表的跳轉(zhuǎn)模式。在跳轉(zhuǎn)模式下,當(dāng)加入新條目時(shí),列表會(huì)滾動(dòng)到底部, 使新條目可見 |
?
常量
???????? int ? TRANSCRIPT_MODE_ALWAYS_SCROLL ????????
無視當(dāng)前可見條目,總是自動(dòng)滾動(dòng)到列表的底部。
?
???????? int ? TRANSCRIPT_MODE_DISABLED ??
禁用跳轉(zhuǎn)模式。
?
???????? int ? TRANSCRIPT_MODE_NORMAL ????
僅當(dāng)最后的條目在屏幕上可見,并且收到數(shù)據(jù)集變更消息時(shí)列表將自動(dòng)滾動(dòng)到底部。
?
公共方法
public void addTouchables (ArrayList<View> views)
想views添加可觸控視圖,該可觸控視圖是該視圖的后代(如果該視圖可觸控, 也可以添加該視圖)。
參數(shù)
views ????? 現(xiàn)在為止的可觸控視圖。
?
public void afterTextChanged (Editable s)
為關(guān)聯(lián)到文本過濾器的文本監(jiān)視器準(zhǔn)備的。什么也不做。
?
public void beforeTextChanged (CharSequence s, int start, int count, int after)
為關(guān)聯(lián)到文本過濾器的文本監(jiān)視器準(zhǔn)備的。什么也不做。
?
public boolean checkInputConnectionProxy (View view)
測(cè)試是否為了過濾信息,為文本編輯器使用了輸入連接代理,該操作允許使用代理。
參數(shù)
view ??????? 生成InputMethodManager調(diào)用的視圖。
返回值
?????????????????? 允許調(diào)用返回true,拒絕返回false。
?
public void clearTextFilter ()
清楚文本過濾器。
?
public void draw (Canvas canvas)
在指定的畫布上手動(dòng)繪制視圖(及其子視圖). 調(diào)用該函數(shù)之前,視圖必須已經(jīng)完成整個(gè)布局過程。 當(dāng)實(shí)現(xiàn)一個(gè)視圖時(shí),不需要繼承這個(gè)方法;而是實(shí)現(xiàn)onDraw(Canvas)方法。
參數(shù)
canvas ?? 要繪制視圖的畫布
?
public AbsListView.LayoutParams generateLayoutParams (AttributeSet attrs)
返回一組基于提供的屬性集合的布局參數(shù)集合.
參數(shù)
attrs ?????? 用于生成布局參數(shù)的屬性集.
返回值
??? ViewGroup.LayoutParams 或其子類的實(shí)例.
?
public int getCacheColorHint ()
如果該值為非零,表示該視圖總是在固定的、單色、不透明的背景上繪制。
返回值
??? 緩存顏色。
?
public void getFocusedRect (Rect r)
在視圖擁有焦點(diǎn)時(shí),用戶將焦點(diǎn)移向其他視圖,可以使用該方法取得下一個(gè)視圖的 矩形填充區(qū)域。 默認(rèn)情況,該矩形為視圖的 getDrawingRect(Rect)。當(dāng)然,如果你的視圖維護(hù)著 內(nèi)部選中狀態(tài),比如游標(biāo)、選中的行或列,你應(yīng)該重寫該方法,并返回特定的矩形。
參數(shù)
r ???? 要填充的矩形,使用視圖的坐標(biāo)系。
?
public int getListPaddingBottom ()
列表內(nèi)邊距是普通視圖內(nèi)邊距和選擇器內(nèi)邊距的最大值。
返回值
??? 列表底部的內(nèi)邊距。
參見
??? getPaddingBottom()
??? getSelector()
?
public int getListPaddingLeft ()
列表內(nèi)邊距是普通視圖內(nèi)邊距和選擇器內(nèi)邊距的最大值。
返回值
??? 列表左側(cè)的內(nèi)邊距。
參見
??? getPaddingLeft()
??? getSelector()
?
public int getListPaddingRight ()
列表內(nèi)邊距是普通視圖內(nèi)邊距和選擇器內(nèi)邊距的最大值。
返回值
??? 列表右側(cè)的內(nèi)邊距。
參見
??? getPaddingRight()
??? getSelector()
?
public int getListPaddingTop ()
列表內(nèi)邊距是普通視圖內(nèi)邊距和選擇器內(nèi)邊距的最大值。
返回值
?? ?列表頂部的內(nèi)邊距。
參見
??? getPaddingTop()
??? getSelector()
?
public View getSelectedView ()
返回值
??? 當(dāng)前選中條目對(duì)應(yīng)的視圖;無選中條目時(shí)返回空。
?
public Drawable getSelector ()
返回用于在列表中繪制選擇器的 可繪制對(duì)象。
返回值
??? 用于顯示選擇器的可繪制對(duì)象。
?
public int getSolidColor ()
如果你的視圖總是在單色背景上繪制,并且需要漸變的邊時(shí),重載該函數(shù)。 返回非零的顏色值,使視圖系統(tǒng)可以優(yōu)化漸進(jìn)邊的繪制。返回非零顏色值時(shí), 阿爾法通道應(yīng)設(shè)為 0xFF。
返回值
??? ???????? 該視圖的單色背景色;為零表示不是單色。
?
public CharSequence getTextFilter ()
如果存在,則返回列表的文本過濾器。
返回值
??? 文本的列表過濾器;如果過濾器未啟用返回空。
?
public int getTranscriptMode ()
返回當(dāng)前跳轉(zhuǎn)模式。
返回值
??? TRANSCRIPT_MODE_DISABLED
、TRANSCRIPT_MODE_NORMAL
或者TRANSCRIPT_MODE_ALWAYS_SCROLL
?
public boolean hasTextFilter ()
返回列表視圖是否具有文本過濾器。
?
public void invalidateViews ()
使所有的視圖重新構(gòu)建并重繪。
?
public boolean isFastScrollEnabled ()
返回當(dāng)前快速滾動(dòng)特性的狀態(tài)。
返回值
??? 如果快速滾動(dòng)已啟用返回真,否則返回假。
參見
??? setFastScrollEnabled(boolean)
?
public boolean isScrollingCacheEnabled ()
指示滾動(dòng)時(shí)是否使用子視圖的繪圖緩存。默認(rèn)為使用繪圖緩存,這會(huì)占用更多的內(nèi)存。
返回值
??? 如果啟用了滾動(dòng)緩存返回真,否則返回假。
參見
??? setScrollingCacheEnabled(boolean)
??? setDrawingCacheEnabled(boolean)
?
public boolean isSmoothScrollbarEnabled ()
返回平滑滾動(dòng)特性的當(dāng)前狀態(tài)。
返回值
??? 如果平滑滾動(dòng)啟用返回真,否則返回假。
參見
??? setSmoothScrollbarEnabled(boolean)
?
public boolean isStackFromBottom ()
指示該視圖的內(nèi)容是否為向上插入,或者說棧底在底邊。
返回值
??? 如果該視圖內(nèi)容以底邊為棧底返回真,否則返回假。
?
public boolean isTextFilterEnabled ()
指示該視圖是否啟用了輸入過濾。
返回值
??? 如啟用了輸入過濾則為真,否則為假。
參見
??? setTextFilterEnabled(boolean)
??? Filterable
?
public InputConnection onCreateInputConnection (EditorInfo outAttrs)
返回用于編輯過濾文本的 InputConnection 對(duì)象。
參數(shù)
outAttrs ????????? 鏈接使用的屬性信息。
?
public void onFilterComplete (int count)
過濾操作結(jié)束的通知。
參數(shù)
count ????? 過濾結(jié)果的數(shù)量
?
public void onGlobalLayout ()
視圖樹的可視性或全局布局狀態(tài)發(fā)生變化時(shí)執(zhí)行的回調(diào)函數(shù)。
?
public boolean onInterceptTouchEvent (MotionEvent ev)
使用此方法可以攔截所有觸摸屏動(dòng)作引發(fā)的事件.這意味著你可以監(jiān)視分派給子項(xiàng)的事件, 并且可以在當(dāng)前手勢(shì)的任何一點(diǎn)獲得其控制權(quán)。
使用此方法需謹(jǐn)慎.因?yàn)樗c View.onTouchEvent(MotionEvent) 有相當(dāng)復(fù)雜的交互。使用它需要像該方法實(shí)現(xiàn)一樣正確的實(shí)現(xiàn)該方法.觸控事件是按如下順序接收的:
l? 首先該函數(shù)收到按下事件
l? 按下事件會(huì)在視圖組的子視圖以及本視圖的 onTouchEvent()方法中處理. 這意味著若要處理之后的手勢(shì)(代替父視圖來處理該事件),你應(yīng)該實(shí)現(xiàn) onTouchEvent() 方法并返回真.另外,如果你的onTouchEvent() 方法返回真, onInterceptTouchEvent() 方法將不會(huì)收到接下來發(fā)生的事件, 整個(gè)觸控處理必須在 onTouchEvent() 方法中進(jìn)行.
l? 如果該方法返回假,接下來的每個(gè)事件(直到最后的抬起事件) 都會(huì)首先由該函數(shù)來處理,之后傳給目標(biāo)對(duì)象的 onTouchEvent() 方法.
l? 如果該函數(shù)返回真,你不會(huì)收到接下來的任何事件: 目標(biāo)視圖會(huì)接收到該事件,但其動(dòng)作被標(biāo)記為 ACTION_CANCEL,之后的事件都會(huì)交由你的 onTouchEvent() 方法來處理,不再出現(xiàn)在該方法中。
參數(shù)
ev ?? 沿著層次結(jié)構(gòu)向下分派的動(dòng)作事件。
返回值
??? 若將動(dòng)作事件從子視圖中截獲并通過 onTouchEvent() 將他們分派給當(dāng)前視圖組,則返回真。當(dāng)前目標(biāo)將收到 ACTION_CANCEL 事件,并且不再會(huì)有其他消息傳入該函數(shù)。
?
public boolean onKeyDown (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyMultiple() 的默認(rèn)實(shí)現(xiàn). 如果視圖可用并可按, 當(dāng)按下 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 時(shí)執(zhí)行視圖的按下事件。
參數(shù)
keyCode ????????? 表示按下的鍵的、在 KEYCODE_ENTER 中定義的鍵盤代碼。
event ????? KeyEvent 對(duì)象,定義了按鈕動(dòng)作。
返回值
??? 如果處理了事件,返回真。如果允許下一個(gè)事件接受器處理該事件,可以返回假。
?
public boolean onKeyUp (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyMultiple() 的默認(rèn)實(shí)現(xiàn). 當(dāng)釋放 KEYCODE_DPAD_CENTER 或 KEYCODE_ENTER 時(shí)執(zhí)行視圖的單擊事件。
參數(shù)
keyCode ????????? 表示按下的鍵的、在 KEYCODE_ENTER 中定義的鍵盤代碼。
event ????? KeyEvent 對(duì)象,定義了按鈕動(dòng)作。
返回值
??? 如果處理了事件,返回真.如果允許下一個(gè)事件接受器處理該事件,可以返回假。
?
public void onRestoreInstanceState (Parcelable state)
允許視圖重新應(yīng)用之前由 onSaveInstanceState() 保存的內(nèi)部狀態(tài)的回調(diào)函數(shù)。該方法得 state 參數(shù)不可能為空。
參數(shù)
state ????? 之前由 onSaveInstanceState() 返回的狀態(tài)信息。
?
public Parcelable onSaveInstanceState ()
允許視圖保存其內(nèi)部狀態(tài)的回調(diào)函數(shù),以便于之后使用相同狀態(tài)創(chuàng)建新實(shí)例. 該狀態(tài)應(yīng)該只包含非持久的或者之后不可重現(xiàn)的信息.例如,你不能保存視圖在屏幕上的位置, 因?yàn)樵趧?chuàng)建新視圖時(shí),會(huì)在視圖得層次結(jié)構(gòu)中重新計(jì)算它的位置。
這里是一些可以保存的信息的例子:文本框中當(dāng)前光標(biāo)的位置(通常不是文字內(nèi)容本身, 因?yàn)槲淖謨?nèi)容一般保存在內(nèi)容提供者或其他持久的儲(chǔ)存器中),列表視圖中的當(dāng)前選中條目等等。
返回值
??? 返回包含視圖當(dāng)前狀態(tài)的 Parcelable 對(duì)象,當(dāng)不想保存狀態(tài)時(shí)返回空。默認(rèn)實(shí)現(xiàn)返回空。
?
public void onTextChanged (CharSequence s, int start, int before, int count)
為關(guān)聯(lián)到文本過濾器的文本監(jiān)視器準(zhǔn)備的。當(dāng)文本變更時(shí),執(zhí)行實(shí)際的過濾操作, 并維護(hù)彈出顯示中的當(dāng)前輸入的過濾文本隱藏和顯示。
?
public boolean onTouchEvent (MotionEvent ev)
實(shí)現(xiàn)該方法來處理觸屏事件。
參數(shù)
ev ?? 觸屏事件.
返回值
??? 如果事件已經(jīng)處理返回真;否則返回假。
?
public void onTouchModeChanged (boolean isInTouchMode)
觸摸模式發(fā)生改變時(shí)調(diào)用的回調(diào)函數(shù)。
參數(shù)
isInTouchMode ????? 如果視圖結(jié)構(gòu)當(dāng)前處于觸摸模式,參數(shù)為真;否則為假。
?
public void onWindowFocusChanged (boolean hasWindowFocus)
包含該視圖的窗體獲得或失去焦點(diǎn)時(shí)調(diào)用該函數(shù)。注意,該動(dòng)作是與視圖的焦點(diǎn) 分開的:為了受到鍵盤事件,你的視圖及其窗口都必須擁有焦點(diǎn)。如果有窗口 覆蓋在你的窗口上方并得到輸入焦點(diǎn),你的窗口會(huì)失去焦點(diǎn),但是視圖的焦點(diǎn) 保持不變。
參數(shù)
hasWindowFocus ? 如果包含該視圖的窗口擁有焦點(diǎn),值為真;否則為假。
?
public int pointToPosition (int x, int y)
將坐標(biāo)點(diǎn)轉(zhuǎn)換為列表中的位置。
參數(shù)
x ???? 本地坐標(biāo)系的 X。
y ???? 本地坐標(biāo)系的 Y。
返回值
??? 包含指定點(diǎn)的條目的位置,如果點(diǎn)不再任何條目上返回 INVALID_POSITION。
?
public long pointToRowId (int x, int y)
將坐標(biāo)點(diǎn)轉(zhuǎn)換為列表?xiàng)l目的行ID。
參數(shù)
x ???? 本地坐標(biāo)系的 X。
y ???? 本地坐標(biāo)系的 Y。
返回值
??? 包含指定點(diǎn)的條目的條目的行ID;如果點(diǎn)不再任何條目上返回 INVALID_ROW_ID。
?
public void reclaimViews (List<View> views)
將該 AbsListView 中的所有視圖(不包含頭尾視圖)移到提供的列表中。 這些視圖包括顯示在屏幕上的以及放入 AbsListView 內(nèi)部視圖回收器的視圖。
參數(shù)
views ????? 用于填充視圖的列表。
?
public void requestLayout ()
當(dāng)某些變更導(dǎo)致視圖的布局失效時(shí)調(diào)用該方法.該方法按照視圖樹的順序調(diào)用。
?
public void setCacheColorHint (int color)
當(dāng)color的值不為0時(shí),此值表示的顏色將提示使用者,列表正在一片單色不透明的背景上被畫出。 當(dāng) color 的值非零時(shí),示意該列表使用實(shí)心、單色不透明的背景,可以緩存背景色。
參數(shù)
color ?????? 背景色。
?
public void setDrawSelectorOnTop (boolean onTop)
控制選擇高亮可繪制對(duì)象應(yīng)該在條目的前面繪制還是在后面繪制。
參數(shù)
onTop ???? 如果為真,選擇器的高亮在條目上面顯示。默認(rèn)值為假。
相關(guān) XML 屬性
??? android:drawSelectorOnTop
?
public void setFastScrollEnabled (boolean enabled)
允許使用快速滾動(dòng)手柄,可以通過拖動(dòng)該手柄在列表中快速滾動(dòng)。 若要顯示字母預(yù)覽并在其間跳轉(zhuǎn),與列表關(guān)聯(lián)的適配器應(yīng)該實(shí)現(xiàn) SectionIndexer 接口。
參數(shù)
enabled 是否允許快速滾動(dòng)。
參見
??? SectionIndexer
??? isFastScrollEnabled()
?
public void setFilterText (String filterText)
為文本過濾器設(shè)置初始值。
參數(shù)
filterText ???????? 過濾器使用的文本。
參見
??? setTextFilterEnabled(boolean)
?
public void setOnScrollListener (AbsListView.OnScrollListener l)
設(shè)置每次列表滾動(dòng)時(shí)收到消息的監(jiān)聽器。
參數(shù)
l ????? 滾動(dòng)監(jiān)聽器。
?
public void setOverScrollMode (int mode)
為視圖設(shè)置過滾動(dòng)模式。有效的過滾動(dòng)模式有 OVER_SCROLL_ALWAYS(默認(rèn)值)、 OVER_SCROLL_IF_CONTENT_SCROLLS(視圖內(nèi)容大于容器時(shí)允許過滾動(dòng))、 和 OVER_SCROLL_NEVER. 只有當(dāng)視圖可以滾動(dòng)時(shí),才可以設(shè)置視圖的過滾動(dòng)模式.
參數(shù)
mode ????? 視圖的新的過滾動(dòng)模式
?
public void setRecyclerListener (AbsListView.RecyclerListener listener)
設(shè)置當(dāng)視圖被放入回收器等待被重用時(shí)得到通知的回收監(jiān)聽器。 該監(jiān)聽器用于釋放關(guān)聯(lián)到視圖的資源。
參數(shù)
listener ? 視圖被放入回收器時(shí)收到通知的回收監(jiān)聽器。
參見
??? AbsListView.RecycleBin
??? AbsListView.RecyclerListener
?
public void setScrollIndicators (View up, View down)
(譯者注:用途參見這里:how to define scrollbar's thumb Drawables from java code?)
?
public void setScrollingCacheEnabled (boolean enabled)
啟用或停止在滾動(dòng)時(shí)使用子視圖的繪圖緩存。默認(rèn)為使用繪圖緩存,這會(huì)占用更多的內(nèi)存。 當(dāng)啟用滾動(dòng)緩存時(shí),首次滾動(dòng)后會(huì)保留緩存。你可以通過調(diào)用 setChildrenDrawingCacheEnabled(boolean) 手動(dòng)清除緩存。
參數(shù)
enabled 啟用滾動(dòng)緩存時(shí)為真,否則為假。
參見
??? isScrollingCacheEnabled()
??? setDrawingCacheEnabled(boolean)
?
public void setSelector (Drawable sel)
設(shè)置用于將當(dāng)前選擇條目設(shè)置為高亮的可繪制對(duì)象。
?
public void setSelector (int resID)
設(shè)置用于將當(dāng)前選擇條目設(shè)置為高亮的可繪制對(duì)象。
參數(shù)
resID ????? 作為選擇高亮的可繪制對(duì)象資源。
相關(guān) XML 屬性
??? android:listSelector
?
public void setSmoothScrollbarEnabled (boolean enabled)
當(dāng)平滑滾動(dòng)啟用時(shí),滾動(dòng)條把手的位置和大小基于可見條目的可見像素?cái)?shù)來計(jì)算。 該處里假定所有列表?xiàng)l目具有相同的高度。如果你使用條目高度不同的類表, 滾動(dòng)條會(huì)在用戶滾動(dòng)過程中改變大小。為了避免這種情況,應(yīng)該禁用該特性。 當(dāng)平滑滾動(dòng)被禁用后,滾動(dòng)條把手的大小和位置只是基于適配器中的條目數(shù), 以及適配器中的可見條目來確定。這樣可以為使用可變高條目列表的用戶, 提供穩(wěn)定的滾動(dòng)條。
參數(shù)
enabled 是否啟用平滑滾動(dòng)。
相關(guān) XML 屬性
??? android:smoothScrollbar
參見
??? setSmoothScrollbarEnabled(boolean)
?
public void setStackFromBottom (boolean stackFromBottom)
當(dāng)棧從底部開始設(shè)置為真時(shí),列表從底部開始向上填充視圖。
參數(shù)
stackFromBottom 為真時(shí),視圖內(nèi)容固定于底部;為假時(shí),固定在頂部。
?
public void setTextFilterEnabled (boolean textFilterEnabled)
啟用或禁用輸入過濾窗口。如啟用,在視圖具有焦點(diǎn)時(shí),將會(huì)過濾子對(duì)象,以匹配用戶輸入。 注意,視圖使用的適配器必須實(shí)現(xiàn)了Filterable接口。
參數(shù)
textFilterEnabled ? 為真表示啟用輸入過濾,反之則為假。
參見
??? Filterable
?
public void setTranscriptMode (int mode)
將列表或網(wǎng)格設(shè)置為跳轉(zhuǎn)模式。該模式下,列表或網(wǎng)格總是滾動(dòng)到底部,以顯示新條目。
參數(shù)
mode ????? 設(shè)置的跳轉(zhuǎn)模式。
參見
??? TRANSCRIPT_MODE_DISABLED
??? TRANSCRIPT_MODE_NORMAL
??? TRANSCRIPT_MODE_ALWAYS_SCROLL
?
public boolean showContextMenuForChild (View originalView)
為指定的視圖或者其父類顯示上下文菜單。
大部分情況下,子類不需要重寫該方法。但是,如果直接將子類添加到窗口管理器(例如:使用 addView(View, android.view.ViewGroup.LayoutParams) 函數(shù)),此時(shí)就需要重寫來顯示上下文菜單。
參數(shù)
originalView ? 首先顯示的上下文菜單的原始視圖.
返回值
??? 如果顯示了上下文菜單返回真。
?
public void smoothScrollBy (int distance, int duration)
平滑滾動(dòng) distance 個(gè)像素,持續(xù) duration 毫秒。
參數(shù)
distance ????????? 滾動(dòng)的距離,像素?cái)?shù)。
duration ????????? 滾動(dòng)動(dòng)畫持續(xù)的時(shí)間,毫秒。
?
public void smoothScrollToPosition (int position, int boundPosition)
平滑滾動(dòng)到指定的適配器位置。視圖會(huì)滾動(dòng)到指定位置顯示出來,如果滾動(dòng)會(huì)使 boundPosition 滾動(dòng)到視圖外,滾動(dòng)會(huì)先被停止。
參數(shù)
position 要滾動(dòng)到的適配器位置。
boundPosition ??????? 如果要將這個(gè)適配器位置移出視圖,滾動(dòng)會(huì)停止。
?
public void smoothScrollToPosition (int position)
平滑滾動(dòng)到指定的適配器位置。視圖會(huì)滾動(dòng)到指定位置顯示出來。
參數(shù)
position 要滾動(dòng)到的適配器位置。
?
public boolean verifyDrawable (Drawable dr)
如果你的視圖子類顯示自己的可繪制對(duì)象,他應(yīng)該重寫此方法并為自己的每個(gè)可繪制對(duì)象返回真。該函數(shù)允許為這些可繪制對(duì)象準(zhǔn)備動(dòng)畫效果。
重寫此方法時(shí),要保證調(diào)用其父類的該方法。
參數(shù)
dr ?? 待校驗(yàn)的可繪制對(duì)象。如果是你顯示的對(duì)象之一,返回真;否則返回調(diào)用父類的返回值。
返回值
??? boolean 如果可繪制對(duì)象已經(jīng)顯示在視圖上了,返回真;否則返回假,不允許動(dòng)畫效果。
?
受保護(hù)方法
protected boolean checkLayoutParams (ViewGroup.LayoutParams p)
???????? (譯者注:檢測(cè)是不是AbsoluteLayout.LayoutParams的實(shí)例)
?
protected int computeVerticalScrollExtent ()
計(jì)算滾動(dòng)條把手在縱向滾動(dòng)范圍內(nèi)占用的幅度。該值用于計(jì)算滾動(dòng)條把手在滾動(dòng)條滑道中的長(zhǎng)度。
范圍使用與 computeVerticalScrollRange() 和 computeVerticalScrollOffset() 相同的任意單位。
默認(rèn)的長(zhǎng)度是視圖的可繪制高度。
返回值
??? 滾動(dòng)條把手在縱向滾動(dòng)范圍內(nèi)占用的幅度。
?
protected int computeVerticalScrollOffset ()
計(jì)算滾動(dòng)條把手在縱向滾動(dòng)范圍內(nèi)的位置。該值用于計(jì)算滾動(dòng)條把手在滾動(dòng)條滑道中的位置。
范圍使用與 computeVerticalScrollRange() 和 computeVerticalScrollExtent() 相同的任意單位。
默認(rèn)位置是視圖的滾動(dòng)條位置。
返回值
??? 滾動(dòng)條把手的縱向位置
?
protected int computeVerticalScrollRange ()
計(jì)算滾動(dòng)條代表的縱向范圍。
范圍使用與 computeVerticalScrollExtent() 和 computeVerticalScrollOffset() 相同的任意單位。
返回值
??? 縱向滾動(dòng)條代表的整個(gè)縱向范圍。
??? 默認(rèn)縱向范圍時(shí)視圖的繪制高度。
?
protected void dispatchDraw (Canvas canvas)
調(diào)用此方法來繪出子視圖。可被衍生類重寫,以便在其子項(xiàng)被畫出之前取得控制權(quán)。此方法由 draw 方法在繪制子視圖時(shí)調(diào)用。子類可以重寫該方法,在繪制其子視圖之前獲得控制權(quán)。(但是在繪制其自身的視圖之后。)
參數(shù)
canvas ?? 繪制視圖的畫布。
?
protected void dispatchSetPressed (boolean pressed)
為視圖的所有子視圖調(diào)用 setPressed 方法。
參數(shù)
pressed 新的按下狀態(tài)。
?
protected void drawableStateChanged ()
在視圖狀態(tài)的變化影響到所顯示可繪制對(duì)象的狀態(tài)時(shí)調(diào)用該方法。
覆蓋該方法時(shí),要確保調(diào)用了父類的該方法。
?
protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)
基于提供的布局參數(shù)返回一組安全的布局參數(shù)集合。當(dāng)傳入 ViewGroup 的視圖的參數(shù)沒有通過 checkLayoutParams(android.view.ViewGroup.LayoutParams) 的檢測(cè)時(shí),調(diào)用該方法。該方法會(huì)返回適合 ViewGroup 的新的布局參數(shù),可能從指定的布局參數(shù)中復(fù)制適當(dāng)?shù)膶傩浴?/span>
參數(shù)
p ???? 要轉(zhuǎn)換為適合于 ViewGroup 的布局參數(shù)的集合.
返回值
??? ViewGroup.LayoutParams 或其子類的實(shí)例。
?
protected float getBottomFadingEdgeStrength ()
返回底部漸變邊緣的強(qiáng)度或密集度。強(qiáng)度的值介于0.0(無漸變)到1.0(全漸變)之間。缺省實(shí)現(xiàn)只返回0.0或1.0,而不返回中間值。子類應(yīng)該重載此方法來給滾動(dòng)時(shí)提供更平滑的漸變過程。
返回值
??? 底部漸變的強(qiáng)度,即介于0.0f和1.0f之間的浮點(diǎn)值。
?
protected ContextMenu.ContextMenuInfo getContextMenuInfo ()
如果視圖要向上下文菜單加入額外信息,就應(yīng)該實(shí)現(xiàn)該方法。返回的結(jié)果作為 onCreateContextMenu(ContextMenu, View, ContextMenuInfo) 回調(diào)函數(shù)的參數(shù)。
返回值
??? 上下文菜單要顯示的條目的額外信息.該信息會(huì)根據(jù)視圖子類的不同而變化。
?
protected float getTopFadingEdgeStrength ()
返回頂部漸變邊緣的強(qiáng)度或密集度。強(qiáng)度的值介于0.0(無漸變)到1.0(全漸變)之間. 缺省實(shí)現(xiàn)只返回0.0或1.0,而不返回中間值。子類應(yīng)該重載此方法來給滾動(dòng)時(shí)提供更平滑的漸變過程。
返回值
??? 頂部漸變的強(qiáng)度,即介于0.0f和1.0f之間的浮點(diǎn)值。
?
protected void handleDataChanged ()
?
?
protected boolean isInFilterMode ()
指示視圖是否處于過濾狀態(tài)。過濾狀態(tài)在用戶在鍵盤上輸入信息時(shí)啟動(dòng)。
返回值
??? 如果視圖處于過濾狀態(tài),返回真;否則返回假。
?
protected void layoutChildren ()
子類必須重寫此方法,以為其子視圖布局。
?
protected void onAttachedToWindow ()
當(dāng)視圖附加到窗體上時(shí)調(diào)用該方法。在這個(gè)時(shí)點(diǎn),視圖擁有了用于顯示的表面,將開始繪制。注意,系統(tǒng)保證在調(diào)用onDraw(Canvas) 之前調(diào)用該方法,但可能在調(diào)用 onDraw(Canvas) 之前的任何時(shí)刻,包括調(diào)用 onMeasure(int, int) 之前或之后。
?
protected int[] onCreateDrawableState (int extraSpace)
為當(dāng)前視圖生成新的 Drawable 狀態(tài)時(shí)發(fā)生。當(dāng)視圖系統(tǒng)檢測(cè)到緩存的可繪制對(duì)象失效時(shí),調(diào)用該方法。你可以使用 getDrawableState() 方法重新取得當(dāng)前的狀態(tài)。
參數(shù)
extraSpace ???? 如果為非零,該值為你要在返回值的數(shù)組中存放的你自己的狀態(tài)信息的數(shù)量。
返回值
??? 返回保存了視圖的當(dāng)前 Drawable 狀態(tài)的數(shù)組。
?
protected void onDetachedFromWindow ()
將視圖從屏幕上分離的時(shí)候調(diào)用該方法。這個(gè)時(shí)點(diǎn)視圖已經(jīng)不具有可繪制部分。
?
protected void onDisplayHint (int hint)
得到視圖是否處于顯示狀態(tài)的提示信息。例如,當(dāng)視圖移出屏幕時(shí),他收到視圖沒有顯示的提示 信息。應(yīng)用程序不應(yīng)該依靠該回調(diào)函數(shù),不保證一定會(huì)收到該提示。
參數(shù)
hint ???????? 關(guān)于視圖是否處于顯示狀態(tài):VISIBLE 或 INVISIBLE。
?
protected void onFocusChanged (boolean gainFocus, int direction, Rect previouslyFocusedRect)
當(dāng)視圖的焦點(diǎn)改變時(shí)調(diào)用。由定向?qū)Ш綄?dǎo)致的焦點(diǎn)變更時(shí), direction 和 previouslyFocusedRect 提供了焦點(diǎn)是從那里來的進(jìn)一步信息。
參數(shù)
gainFocus ?????? 如果視圖具有焦點(diǎn),值為真;否則為假。
direction ???????? 當(dāng)調(diào)用 requestFocus() 為該視圖設(shè)置焦點(diǎn)時(shí),該值為焦點(diǎn)移動(dòng)的方向。其值為 FOCUS_UP、FOCUS_DOWN、 FOCUS_LEFT 或者 FOCUS_RIGHT。當(dāng)使用無參數(shù)的 requestFocus() 時(shí),可能無值。
previouslyFocusedRect???????????? 失去焦點(diǎn)的視圖的矩形坐標(biāo),使用該視圖的坐標(biāo)系統(tǒng).如果指定了, 它將傳入可以知道焦點(diǎn)來自哪里的詳細(xì)信息(作為對(duì) direction 的補(bǔ)充)。否則,其值為 null。
?
protected void onLayout (boolean changed, int l, int t, int r, int b)
子類不要重載此方法,如需要請(qǐng)重載 layoutChildren() 來代替。
參數(shù)
changed ????????? 是否為視圖設(shè)置了新的大小和位置。
l ????? 相對(duì)于父視圖的左側(cè)的位置。
t ???? 相對(duì)于父視圖的頂部的位置。
r ???? 相對(duì)于父視圖的右側(cè)的位置。
b ???? 相對(duì)于父視圖的底部的位置。
?
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
評(píng)估視圖及其內(nèi)容,以決定其寬度和高度.此方法由 measure(int, int) 調(diào)用,子類可以重載以提供更精確、更有效率的衡量其內(nèi)容尺寸的方法。
約定: 覆蓋該方法時(shí),必須調(diào)用 setMeasuredDimension(int, int) 方法來保存評(píng)估結(jié)果的視圖的寬度和高度.如果忘記將導(dǎo)致 measure(int, int) 方法拋出IllegalStateException異常.要有效的利用父類的 onMeasure(int, int)方法。
基類測(cè)量的是背景的大小,除非 MeasureSpec 允許超過背景.子類應(yīng)該重寫 onMeasure(int, int) 方法,以為其內(nèi)容提供更適合的大小。
如果重寫了該方法,子類要確保其高度和寬度大于等于視圖的最小高度和寬度. (getSuggestedMinimumHeight() 和 getSuggestedMinimumWidth())
參數(shù)
widthMeasureSpec ??????? 父視圖要求的橫向空間大小.該要求由 View.MeasureSpec 進(jìn)行了編碼處理。
heightMeasureSpec ?????? 父視圖要求的縱向空間大小.該要求由 View.MeasureSpec 進(jìn)行了編碼處理。
?
protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)
由 overScrollBy(int, int, int, int, int, int, int, int, boolean) 調(diào)用,用于響應(yīng)過滾動(dòng)操作。
參數(shù)
scrollX ??? 新的 X 軸滾動(dòng)位置,以像素為單位。
scrollY ??? 新的 Y 軸滾動(dòng)位置,以像素為單位。
clampedX ?????? 當(dāng) scrollX 被限制在過滾動(dòng)邊界時(shí),為真。
clampedY ?????? 當(dāng) scrollY 被限制在過滾動(dòng)邊界時(shí),為真。
?
protected void onSizeChanged (int w, int h, int oldw, int oldh)
布局時(shí)該視圖的大小發(fā)生改變時(shí)調(diào)用該方法.如果是剛加入的視圖,變更前的值為 0。
參數(shù)
w ??? 視圖的當(dāng)前寬度。
h ???? 視圖的當(dāng)前高度。
oldw ?????? 視圖變更前的寬度。
oldh ??????? 視圖變更前的高度。
?
補(bǔ)充
???????? 文章精選
?????????????????? android UI 優(yōu)化之 AbsListView之深度優(yōu)化
?
?