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

简介:

一、结构

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对象,该对象象征着整个控件树的管理者,子控件产生影响整个控件树的事件时,会通知到ViewParentViewParent会将其转换成一个自顶向下的事件,分发下去。参照这里 

三、公共方法

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

           当父视图的一个childLayout控件失效时调用。该方法将会重新请求一个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

本文转自博客园农民伯伯的博客,原文链接:Android 3.0 r1 API中文文档(105) —— ViewParent,如需转载请自行联系原博主。

目录
相关文章
|
7月前
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
193 1
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
396 1
|
4月前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
134 0
|
6月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
75 2
|
6月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
7月前
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
53 2
|
7月前
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
347 1
|
7月前
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
7月前
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
109 3
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
150 2