編輯:Android開發實例
前言
本章內容是android.widget.AbsListView,版本為Android 2.3 r1,翻譯來自"cnmahj"。
AbsListView
譯者署名: cnmahj
譯者鏈接: 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 ()
列表內邊距是普通視圖內邊距和選擇器內邊距的最大值。
返回值
列表底部的內邊距。
參見
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_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 滾動監聽器。
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.0或1.0,而不返回中間值。子類應該重載此方法來給滾動時提供更平滑的漸變過程。
返回值
底部漸變的強度,即介於0.0f和1.0f之間的浮點值。
protected ContextMenu.ContextMenuInfo getContextMenuInfo ()
如果視圖要向上下文菜單加入額外信息,就應該實現該方法。返回的結果作為 onCreateContextMenu(ContextMenu, View, ContextMenuInfo) 回調函數的參數。
返回值
上下文菜單要顯示的條目的額外信息.該信息會根據視圖子類的不同而變化。
protected float getTopFadingEdgeStrength ()
返回頂部漸變邊緣的強度或密集度。強度的值介於0.0(無漸變)到1.0(全漸變)之間. 缺省實現只返回0.0或1.0,而不返回中間值。子類應該重載此方法來給滾動時提供更平滑的漸變過程。
返回值
頂部漸變的強度,即介於0.0f和1.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_UP、FOCUS_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之深度優化
AbsListView.LayoutParams
譯者署名: cnmahj
譯者鏈接: http://android.toolib.net/blog/
版本:Android 2.3 r1
結構
繼承關系
public static class AbsListView.LayoutParams extends ViewGroup.LayoutParams
java.lang.Object
android.view.ViewGroup.LayoutParams
android.widget.AbsListView.LayoutParams
概述
AbsListView 擴展了 LayoutParams 以提供空間來保存試圖類型。
AbsListView.OnScrollListener
譯者署名: cnmahj
譯者鏈接: http://android.toolib.net/blog/
版本:Android 2.3 r1
結構
繼承關系
public static class AbsListView.OnScrollListener
android.widget.AbsListView.OnScrollListener
概述
為了在列表或網格滾動時執行回調函數而定義的接口。
常量
public static final int SCROLL_STATE_FLING
用戶之前通過觸控滾動並執行了快速滾動。滾動動畫正滑向停止點。
常量值: 2 (0x00000002)
public static final int SCROLL_STATE_IDLE
視圖沒有滾動。注意,使用軌跡球滾動時,在滾動停止之前,一直處於空閒狀態。
常量值: 0 (0x00000000)
public static final int SCROLL_STATE_TOUCH_SCROLL
用戶通過觸控滾動,並且手指沒有離開屏幕。
常量值: 1 (0x00000001)
公共方法
public abstract void onScroll (AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
當列表或網格的滾動已經完成時調用的回調函數。會在滾動完成後調用。
參數
view 報告滾動狀態的對象視圖。
firstVisibleItem 第一個可見單元格的索引(如果 visibleItemCount == 0 則忽略該參數)。
visibleItemCount 可見單元格數。
totalItemCount 列表適配器中的條目數。
public abstract void onScrollStateChanged (AbsListView view, int scrollState)
當列表視圖或網格視圖正在滾動是執行的回調函數。如果視圖正在滾動, 該方法會在渲染下一幀之前調用該方法。就是說,會在調用任何 getView(int, View, ViewGroup)方法之前調用。
參數
view 報告滾動狀態的對象視圖。
scrollState 當前滾動狀態。值為 SCROLL_STATE_IDLE、 SCROLL_STATE_TOUCH_SCROLL或SCROLL_STATE_IDLE。
AbsListView.RecyclerListener
譯者署名: cnmahj
譯者鏈接: http://android.toolib.net/blog/
版本:Android 2.3 r1
結構
繼承關系
public static interface AbsListView.RecyclerListener
android.widget.AbsListView.RecyclerListener
概述
RecyclerListener 是用於接收視圖被移動到待回收堆中時的消息的監聽器。該監聽器用於釋放分配到被放入回收站的視圖的資源。
公共方法
public abstract void onMovedToScrapHeap (View view)
指示指定的視圖被移動到待回收堆中。視圖不再顯示在屏幕上,關聯到該視圖的貴重的資源應該被釋放。
轉自:http://www.cnblogs.com/over140/archive/2011/06/07/2074019.html
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Android提供了很多控件便於開發者進行UI相關的程序設計。但是很多時候,默認的一些UI設置不足以滿足我們的需求,要麼不好看,要麼高度不夠,亦或者是與應用界面不
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項目中用到,所以就把自己的使用的在這總結一下,也方便日後查找。 PerferenceA