正文
一、結構
public interface ViewParent
android.view.ViewParent
間接子類
AbsListView, AbsSpinner, AbsoluteLayout, AdapterView<T extends Adapter>, AppWidgetHostView, DatePicker, DialerFilter, ExpandableListView, FrameLayout, Gallery, GestureOverlayView, GridView, HorizontalScrollView, ImageSwitcher, LinearLayout, ListView, MediaController, RadioGroup, RelativeLayout, ScrollView, SlidingDrawer, Spinner, TabHost, TabWidget, TableLayout, TableRow, TextSwitcher, TimePicker, TwoLineListItem, ViewAnimator, ViewFlipper, ViewGroup, ViewSwitcher, WebView, ZoomControls
二、類概述
三、公共方法
public abstract void bringChildToFront (View child)
把該視圖置于其他所有子視圖之上。(譯者注:如在FrameLayout中切換被疊放的視圖)
參數
child 需要改變順序的子視圖
public abstract void childDrawableStateChanged (View child)
當子視圖的drawable狀态發生變化的時候,調用該方法。
child drawable狀态發生變化的子視圖
public abstract void clearChildFocus (View child)
當子視圖失去焦點的時候調用該方法。
child 失去焦點的子視圖
public abstract void createContextMenu (ContextMenu menu)
如果該指定的ContextMenu需要增加菜單,則會由它的父類去填充(同時會向上遞歸)。
menu 需要填充的菜單
public abstract View focusSearch (View v, int direction)
在指定的方向找到最近的View來切換焦點。
v 目前視圖
direction FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, 與FOCUS_RIGHT中取值
public abstract void focusableViewAvailable (View v)
通知父類一個新的并且能夠取得焦點的子視圖可以使用了。用于處理從沒有可取得焦點的視圖到出現第一個可以取得焦點的視圖的轉變。
v 新出現的可以取得焦點的視圖
public abstract boolean getChildVisibleRect (View child, Rect r, Point offset)
public abstract ViewParent getParent ()
如果存在父視圖,則傳回該視圖;否則傳回NULL。
傳回
如果不存在父視圖,則傳回null
public abstract void invalidateChild (View child, Rect r)
重繪目前child指定的範圍。
child 目前視圖
r child中無效的範圍區域
public abstract ViewParent invalidateChildInParent (int[] location, Rect r)
重繪目前child的全部或者一部分指定範圍。location長度為的整形數組,兩個數分别為child左邊和上邊的坐标。如果父視圖中指定的區域r是無效的,則傳回該ViewParent的父視圖。如果父視圖中指定區域是有效的或者父視圖不存在,則傳回null。如果方法傳回對象不為空,則需要把location數組中的數值更新為傳回的ViewParent的左邊和上邊的坐标值。
location 長度為2的整形數組,資料為需要失效的child左邊和上邊的坐标值
ViewParent,如果不存在父視圖,則傳回null
public abstract boolean isLayoutRequested ()
傳回該視圖父類是否有layout控件被請求。
true需要,false 不需要
public abstract void recomputeViewAttributes (View child)
通知父類和子類所有的View屬性需要重新生成。
child 改變屬性的View
public abstract void requestChildFocus (View child , View focused)
當需要轉換子類焦點時調用。
child 該ViewParent需要取得焦點的視圖。該視圖包含目前聚焦視圖。但事實上也不一定會獲得焦點
focused child的一個有焦點的子視圖
public abstract boolean requestChildRectangleOnScreen (View child, Rect rectangle, boolean immediate)
當該child視圖需要顯示在螢幕特定位置時調用。ViewGroup如果需要重寫該方法,可以遵循以下幾點:
* 必須是該group的直接子類
* 要是child中的坐标
ViewGroup要重寫該方法,要堅持幾下幾點:
* 規定的區域已經是可見的,那麼該方法将什麼都不會改變
* 區域可見時,該視圖才會有滾動條
child 以起請求的直接子視圖
rectangle 需要顯示到螢幕上的區域範圍
immediate true禁止有滾動 false 則有
傳回值
處理請求操作後是否有滾動
public abstract void requestDisallowInterceptTouchEvent (boolean disallowIntercept)
該父類需要把該方法傳遞給它的父類。同時也要服從觸屏的請求(也就是說,隻有在按上Up或者clear後才能清除該辨別)。
disallowIntercept true表示child觸屏事件
public abstract void requestLayout ()
當父視圖的一個child的Layout控件失效時調用。該方法将會重新請求一個Layout控件。
public abstract void requestTransparentRegion (View child)
當一個child希望視圖層去收集透明區域并報告給視窗排序服務時調用。例如SurfaceView可以用這個接口來提高接口性能。如果在目前層次沒有視圖,沒有必要用該方法優化,否則有可能會輕微影響該層的性能。
child 要求透明區域進行處理的視圖
public abstract boolean showContextMenuForChild (View originalView)
顯示該視圖或者其祖先類的上下文菜單。
originalView 需要顯示上下文菜單的視圖
顯示上下文菜單時傳回true
public abstract ActionMode startActionModeForChild (View originalView, ActionMode.Callback callback) Since: API Level 11
為指定視圖啟動一個操作模式。
originalView 操作模式首頁調用的源視圖
callback 處理操作模式生命周期的回調函數
如果新的操作模式已經啟動,傳回該操作模式,否則傳回null。
本文轉自over140 51CTO部落格,原文連結:http://blog.51cto.com/over140/582380,如需轉載請自行聯系原作者