Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 3.0 r1 API中文文檔(105) —— ViewParent

Android 3.0 r1 API中文文檔(105) —— ViewParent

編輯:Android開發實例

前言

  本章內容是android.view.ViewParent,版本為Android 3.0 r1,翻譯來自"逝憶流緣"。

 

正文

  一、結構

 

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

 

 

  二、類概述

    定義了一些作為View父類,它所具有的功能(譯者注:也可以理解為方法)。當一個View與父類交互時,就可以用到這些API了。(譯者注:Android中子控件維系一個ViewParent對象,該對象象征著整個控件樹的管理者,子控件產生影響整個控件樹的事件時,會通知到ViewParent,ViewParent會將其轉換成一個自頂向下的事件,分發下去。參照這裡
 

 

  三、公共方法

 

  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是長度為2的整形數組,兩個數分別為child左邊和上邊的坐標。如果父視圖中指定的區域r是無效的,則返回該ViewParent的父視圖。如果父視圖中指定區域是有效的或者父視圖不存在,則返回null。如果方法返回對象不為空,則需要把location數組中的數值更新為返回的ViewParent的左邊和上邊的坐標值。

  參數

  location   長度為2的整形數組,數據為需要失效的child左邊和上邊的坐標值

                   r               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如果需要重寫該方法,可以遵循以下幾點:

  * child必須是該group的直接子類

  * rectangle要是child中的坐標

    ViewGroup要重寫該方法,要堅持幾下幾點:

  * 如果rectangle規定的區域已經是可見的,那麼該方法將什麼都不會改變

  * 只有在rectangle區域可見時,該視圖才會有滾動條

  參數

  child                  以起請求的直接子視圖

  rectangle          需要顯示到屏幕上的區域范圍

                       immediate        true禁止有滾動 false 則有

  返回值

                   處理請求操作後是否有滾動

 

  public abstract void requestDisallowInterceptTouchEvent (boolean disallowIntercept)

           讓父類不用onInterceptTouchEvent(MotionEvent)來攔截觸屏事件。

           該父類需要把該方法傳遞給它的父類。同時也要服從觸屏的請求(也就是說,只有在按上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)

           顯示該視圖或者其祖先類的上下文菜單。

           大多數情況下,子類不需要重寫該方法。但是,當該子類被直接加到窗口管理器上時(例如:addView(View, android.view.ViewGroup.LayoutParams)),就會重寫該方法,並顯示上下文菜單。

  參數

  originalView     需要顯示上下文菜單的視圖

  返回

                   顯示上下文菜單時返回true

 

    public abstract ActionMode startActionModeForChild (View originalView, ActionMode.Callback callback)      Since: API Level 11

  為指定視圖啟動一個操作模式。

  大多數情況下,一個子類並不需要重新此類。但是,如果子類是直接添加到窗口管理器(例如,addView(View, android.view.ViewGroup.LayoutParams)),那麼應重寫此方法並啟動操作模式。(譯者注:關於ActionMode參見這裡

  參數

  originalView  操作模式首頁調用的源視圖

  callback          處理操作模式生命周期的回調函數

  返回值

        如果新的操作模式已經啟動,返回該操作模式,否則返回null。

 

 

  四、補充
 

 

    文章精選

                   [推薦]深入Android 【六】 —— 界面構造

                   Android UI Event Listener

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved