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