前言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 滾動監聽器。