Android AbsListView

結構html

繼承關係java

public abstract class AbsListView extends AdapterView <T extends Adapter>android

implements TextWatcher ViewTreeObserver.OnGlobalLayoutListener ViewTreeObserver.OnTouchModeChangeListener Filter.FilterListenercanvas

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 ()

列表內邊距是普通視圖內邊距和選擇器內邊距的最大值。

返回值

列表底部的內邊距。

參見

getPaddingBottom()

getSelector()

public int getListPaddingLeft ()

列表內邊距是普通視圖內邊距和選擇器內邊距的最大值。

返回值

列表左側的內邊距。

參見

getPaddingLeft()

getSelector()

public int getListPaddingRight ()

列表內邊距是普通視圖內邊距和選擇器內邊距的最大值。

返回值

列表右側的內邊距。

參見

getPaddingRight()

getSelector()

public int getListPaddingTop ()

列表內邊距是普通視圖內邊距和選擇器內邊距的最大值。

返回值

列表頂部的內邊距。

參見

getPaddingTop()

getSelector()

public View getSelectedView ()

返回值

當前選中條目對應的視圖;無選中條目時返回空。

public Drawable getSelector ()

返回用於在列表中繪製選擇器的 可繪製對象。

返回值

用於顯示選擇器的可繪製對象。

public int getSolidColor ()

若是你的視圖老是在單色背景上繪製,而且須要漸變的邊時,重載該函數。 返回非零的顏色值,使視圖系統能夠優化漸進邊的繪製。返回非零顏色值時, 阿爾法通道應設爲 0xFF

返回值

該視圖的單色背景色;爲零表示不是單色。

public CharSequence getTextFilter ()

若是存在,則返回列表的文本過濾器。

返回值

文本的列表過濾器;若是過濾器未啓用返回空。

public int getTranscriptMode ()

返回當前跳轉模式。

返回值

TRANSCRIPT_MODE_DISABLEDTRANSCRIPT_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) 有至關複雜的交互。使用它須要像該方法實現同樣正確的實現該方法.觸控事件是按以下順序接收的:

l 首先該函數收到按下事件

l 按下事件會在視圖組的子視圖以及本視圖的 onTouchEvent()方法中處理. 這意味着若要處理以後的手勢(代替父視圖來處理該事件),你應該實現 onTouchEvent() 方法並返回真.另外,若是你的onTouchEvent() 方法返回真, onInterceptTouchEvent() 方法將不會收到接下來發生的事件, 整個觸控處理必須在 onTouchEvent() 方法中進行.

l 若是該方法返回假,接下來的每一個事件(直到最後的擡起事件) 都會首先由該函數來處理,以後傳給目標對象的 onTouchEvent() 方法.

l 若是該函數返回真,你不會收到接下來的任何事件: 目標視圖會接收到該事件,但其動做被標記爲 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 滾動監聽器。

public void setOverScrollMode (int mode)

爲視圖設置過滾動模式。有效的過滾動模式有 OVER_SCROLL_ALWAYS(默認值)、 OVER_SCROLL_IF_CONTENT_SCROLLS(視圖內容大於容器時容許過滾動)、 OVER_SCROLL_NEVER. 只有當視圖能夠滾動時,才能夠設置視圖的過滾動模式.

參數

mode 視圖的新的過滾動模式

public void setRecyclerListener (AbsListView.RecyclerListener listener)

設置當視圖被放入回收器等待被重用時獲得通知的回收監聽器。 該監聽器用於釋放關聯到視圖的資源。

參數

listener 視圖被放入回收器時收到通知的回收監聽器。

參見

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)

啓用或中止在滾動時使用子視圖的繪圖緩存。默認爲使用繪圖緩存,這會佔用更多的內存。 當啓用滾動緩存時,首次滾動後會保留緩存。你能夠經過調用 setChildrenDrawingCacheEnabled(boolean) 手動清除緩存。

參數

enabled 啓用滾動緩存時爲真,不然爲假。

參見

isScrollingCacheEnabled()

setDrawingCacheEnabled(boolean)

public void setSelector (Drawable sel)

設置用於將當前選擇條目設置爲高亮的可繪製對象。

public void setSelector (int resID)

設置用於將當前選擇條目設置爲高亮的可繪製對象。

參數

resID 做爲選擇高亮的可繪製對象資源。

相關 XML 屬性

android:listSelector

public void setSmoothScrollbarEnabled (boolean enabled)

當平滑滾動啓用時,滾動條把手的位置和大小基於可見條目的可見像素數來計算。 該處裏假定全部列表條目具備相同的高度。若是你使用條目高度不一樣的類表, 滾動條會在用戶滾動過程當中改變大小。爲了不這種狀況,應該禁用該特性。 當平滑滾動被禁用後,滾動條把手的大小和位置只是基於適配器中的條目數, 以及適配器中的可見條目來肯定。這樣能夠爲使用可變高條目列表的用戶, 提供穩定的滾動條。

參數

enabled 是否啓用平滑滾動。

相關 XML 屬性

android:smoothScrollbar

參見

setSmoothScrollbarEnabled(boolean)

public void setStackFromBottom (boolean stackFromBottom)

當棧從底部開始設置爲真時,列表從底部開始向上填充視圖。

參數

stackFromBottom 爲真時,視圖內容固定於底部;爲假時,固定在頂部。

public void setTextFilterEnabled (boolean textFilterEnabled)

啓用或禁用輸入過濾窗口。如啓用,在視圖具備焦點時,將會過濾子對象,以匹配用戶輸入。 注意,視圖使用的適配器必須實現了Filterable接口。

參數

textFilterEnabled 爲真表示啓用輸入過濾,反之則爲假。

參見

Filterable

public void setTranscriptMode (int mode)

將列表或網格設置爲跳轉模式。該模式下,列表或網格老是滾動到底部,以顯示新條目。

參數

mode 設置的跳轉模式。

參見

TRANSCRIPT_MODE_DISABLED

TRANSCRIPT_MODE_NORMAL

TRANSCRIPT_MODE_ALWAYS_SCROLL

public boolean showContextMenuForChild (View originalView)

爲指定的視圖或者其父類顯示上下文菜單。

大部分狀況下,子類不須要重寫該方法。可是,若是直接將子類添加到窗口管理器(例如:使用 addView(View, android.view.ViewGroup.LayoutParams) 函數),此時就須要重寫來顯示上下文菜單。

參數

originalView 首先顯示的上下文菜單的原始視圖.

返回值

若是顯示了上下文菜單返回真。

public void smoothScrollBy (int distance, int duration)

平滑滾動 distance 個像素,持續 duration 毫秒。

參數

distance 滾動的距離,像素數。

duration 滾動動畫持續的時間,毫秒。

public void smoothScrollToPosition (int position, int boundPosition)

平滑滾動到指定的適配器位置。視圖會滾動到指定位置顯示出來,若是滾動會使 boundPosition 滾動到視圖外,滾動會先被中止。

參數

position 要滾動到的適配器位置。

boundPosition 若是要將這個適配器位置移出視圖,滾動會中止。

public void smoothScrollToPosition (int position)

平滑滾動到指定的適配器位置。視圖會滾動到指定位置顯示出來。

參數

position 要滾動到的適配器位置。

public boolean verifyDrawable (Drawable dr)

若是你的視圖子類顯示本身的可繪製對象,他應該重寫此方法併爲本身的每一個可繪製對象返回真。該函數容許爲這些可繪製對象準備動畫效果。

重寫此方法時,要保證調用其父類的該方法。

參數

dr 待校驗的可繪製對象。若是是你顯示的對象之一,返回真;不然返回調用父類的返回值。

返回值

boolean 若是可繪製對象已經顯示在視圖上了,返回真;不然返回假,不容許動畫效果。

受保護方法

protected boolean checkLayoutParams (ViewGroup.LayoutParams p)

(譯者注:檢測是否是AbsoluteLayout.LayoutParams的實例)

protected int computeVerticalScrollExtent ()

計算滾動條把手在縱向滾動範圍內佔用的幅度。該值用於計算滾動條把手在滾動條滑道中的長度。

範圍使用與 computeVerticalScrollRange() computeVerticalScrollOffset() 相同的任意單位。

默認的長度是視圖的可繪製高度。

返回值

滾動條把手在縱向滾動範圍內佔用的幅度。

protected int computeVerticalScrollOffset ()

計算滾動條把手在縱向滾動範圍內的位置。該值用於計算滾動條把手在滾動條滑道中的位置。

範圍使用與 computeVerticalScrollRange() computeVerticalScrollExtent() 相同的任意單位。

默認位置是視圖的滾動條位置。

返回值

滾動條把手的縱向位置

protected int computeVerticalScrollRange ()

計算滾動條表明的縱向範圍。

範圍使用與 computeVerticalScrollExtent() computeVerticalScrollOffset() 相同的任意單位。

返回值

縱向滾動條表明的整個縱向範圍。

默認縱向範圍時視圖的繪製高度。

protected void dispatchDraw (Canvas canvas)

調用此方法來繪出子視圖。可被衍生類重寫,以便在其子項被畫出以前取得控制權。此方法由 draw 方法在繪製子視圖時調用。子類能夠重寫該方法,在繪製其子視圖以前得到控制權。(可是在繪製其自身的視圖以後。)

參數

canvas 繪製視圖的畫布。

protected void dispatchSetPressed (boolean pressed)

爲視圖的全部子視圖調用 setPressed 方法。

參數

pressed 新的按下狀態。

protected void drawableStateChanged ()

在視圖狀態的變化影響到所顯示可繪製對象的狀態時調用該方法。

覆蓋該方法時,要確保調用了父類的該方法。

protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

基於提供的佈局參數返回一組安全的佈局參數集合。當傳入 ViewGroup 的視圖的參數沒有經過 checkLayoutParams(android.view.ViewGroup.LayoutParams) 的檢測時,調用該方法。該方法會返回適合 ViewGroup 的新的佈局參數,可能從指定的佈局參數中複製適當的屬性。

參數

p 要轉換爲適合於 ViewGroup 的佈局參數的集合.

返回值

ViewGroup.LayoutParams 或其子類的實例。

protected float getBottomFadingEdgeStrength ()

返回底部漸變邊緣的強度或密集度。強度的值介於0.0(無漸變)到1.0(全漸變)之間。缺省實現只返回0.01.0,而不返回中間值。子類應該重載此方法來給滾動時提供更平滑的漸變過程。

返回值

底部漸變的強度,即介於0.0f1.0f之間的浮點值。

protected ContextMenu.ContextMenuInfo getContextMenuInfo ()

若是視圖要向上下文菜單加入額外信息,就應該實現該方法。返回的結果做爲 onCreateContextMenu(ContextMenu, View, ContextMenuInfo) 回調函數的參數。

返回值

上下文菜單要顯示的條目的額外信息.該信息會根據視圖子類的不一樣而變化。

protected float getTopFadingEdgeStrength ()

返回頂部漸變邊緣的強度或密集度。強度的值介於0.0(無漸變)到1.0(全漸變)之間. 缺省實現只返回0.01.0,而不返回中間值。子類應該重載此方法來給滾動時提供更平滑的漸變過程。

返回值

頂部漸變的強度,即介於0.0f1.0f之間的浮點值。

protected void handleDataChanged ()

protected boolean isInFilterMode ()

指示視圖是否處於過濾狀態。過濾狀態在用戶在鍵盤上輸入信息時啓動。

返回值

若是視圖處於過濾狀態,返回真;不然返回假。

protected void layoutChildren ()

子類必須重寫此方法,覺得其子視圖佈局。

protected void onAttachedToWindow ()

當視圖附加到窗體上時調用該方法。在這個時點,視圖擁有了用於顯示的表面,將開始繪製。注意,系統保證在調用onDraw(Canvas) 以前調用該方法,但可能在調用 onDraw(Canvas) 以前的任什麼時候刻,包括調用 onMeasure(int, int) 以前或以後。

protected int[] onCreateDrawableState (int extraSpace)

爲當前視圖生成新的 Drawable 狀態時發生。當視圖系統檢測到緩存的可繪製對象失效時,調用該方法。你可使用 getDrawableState() 方法從新取得當前的狀態。

參數

extraSpace 若是爲非零,該值爲你要在返回值的數組中存放的你本身的狀態信息的數量。

返回值

返回保存了視圖的當前 Drawable 狀態的數組。

protected void onDetachedFromWindow ()

將視圖從屏幕上分離的時候調用該方法。這個時點視圖已經不具備可繪製部分。

protected void onDisplayHint (int hint)

獲得視圖是否處於顯示狀態的提示信息。例如,當視圖移出屏幕時,他收到視圖沒有顯示的提示 信息。應用程序不該該依靠該回調函數,不保證必定會收到該提示。

參數

hint 關於視圖是否處於顯示狀態:VISIBLE INVISIBLE

protected void onFocusChanged (boolean gainFocus, int direction, Rect previouslyFocusedRect)

當視圖的焦點改變時調用。由定向導航致使的焦點變動時, direction previouslyFocusedRect 提供了焦點是從那裏來的進一步信息。

參數

gainFocus 若是視圖具備焦點,值爲真;不然爲假。

direction 當調用 requestFocus() 爲該視圖設置焦點時,該值爲焦點移動的方向。其值爲 FOCUS_UPFOCUS_DOWN FOCUS_LEFT 或者 FOCUS_RIGHT。當使用無參數的 requestFocus() 時,可能無值。

previouslyFocusedRect 失去焦點的視圖的矩形座標,使用該視圖的座標系統.若是指定了, 它將傳入能夠知道焦點來自哪裏的詳細信息(做爲對 direction 的補充)。不然,其值爲 null

protected void onLayout (boolean changed, int l, int t, int r, int b)

子類不要重載此方法,如須要請重載 layoutChildren() 來代替。

參數

changed 是否爲視圖設置了新的大小和位置。

l 相對於父視圖的左側的位置。

t 相對於父視圖的頂部的位置。

r 相對於父視圖的右側的位置。

b 相對於父視圖的底部的位置。

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

評估視圖及其內容,以決定其寬度和高度.此方法由 measure(int, int) 調用,子類能夠重載以提供更精確、更有效率的衡量其內容尺寸的方法。

約定: 覆蓋該方法時,必須調用 setMeasuredDimension(int, int) 方法來保存評估結果的視圖的寬度和高度.若是忘記將致使 measure(int, int) 方法拋出IllegalStateException異常.要有效的利用父類的 onMeasure(int, int)方法。

基類測量的是背景的大小,除非 MeasureSpec 容許超過背景.子類應該重寫 onMeasure(int, int) 方法,覺得其內容提供更適合的大小。

若是重寫了該方法,子類要確保其高度和寬度大於等於視圖的最小高度和寬度. getSuggestedMinimumHeight() getSuggestedMinimumWidth()

參數

widthMeasureSpec 父視圖要求的橫向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。

heightMeasureSpec 父視圖要求的縱向空間大小.該要求由 View.MeasureSpec 進行了編碼處理。

protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)

overScrollBy(int, int, int, int, int, int, int, int, boolean) 調用,用於響應過滾動操做。

參數

scrollX 新的 X 軸滾動位置,以像素爲單位。

scrollY 新的 Y 軸滾動位置,以像素爲單位。

clampedX scrollX 被限制在過滾動邊界時,爲真。

clampedY scrollY 被限制在過滾動邊界時,爲真。

protected void onSizeChanged (int w, int h, int oldw, int oldh)

佈局時該視圖的大小發生改變時調用該方法.若是是剛加入的視圖,變動前的值爲 0

參數

w 視圖的當前寬度。

h 視圖的當前高度。

oldw 視圖變動前的寬度。

oldh 視圖變動前的高度。

補充

文章精選

android UI 優化之 AbsListView之深度優化

相關文章
相關標籤/搜索