Most visited

Recently visited

DrawerLayout

public class DrawerLayout
extends ViewGroup

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.support.v4.widget.DrawerLayout


DrawerLayout作为窗口内容的顶级容器,允许从窗口的一个或两个垂直边缘拉出交互式“抽屉”视图。

使用子视图上的android:layout_gravity属性来控制抽屉定位和布局, android:layout_gravity属性对应于希望抽屉出现的视图的哪一侧:左侧或右侧(或支持布局方向的平台版本上的开始/结束)。请注意,您只能窗口的每个垂直边缘都有一个抽屉视图。 如果您的布局在窗口的每个垂直边缘配置了多个抽屉视图,则运行时将引发异常。

要使用DrawerLayout,请将您的主要内容视图定位为第一个宽度和高度为match_parent且没有layout_gravity> 在主内容视图之后添加抽屉作为子视图,并适当地设置layout_gravity 抽屉通常使用match_parent高度固定的宽度。

DrawerLayout.DrawerListener可用于监视抽屉视图的状态和运动。 避免在动画过程中执行昂贵的操作,如布局,因为这会导致口吃; 尝试在STATE_IDLE状态期间执行昂贵的操作。 DrawerLayout.SimpleDrawerListener提供了每个回调方法的默认/非操作实现。

根据Android Design guide ,位于左侧/起始位置的任何抽屉应始终包含用于在应用程序周围进行导航的内容,而位于右侧/末端的任何抽屉应始终包含采取当前内容的操作。 这保留了与操作栏和其他地方相同的左侧导航结构,右侧结构。

有关如何使用DrawerLayout的更多信息,请阅读 Creating a Navigation Drawer

Summary

Nested classes

interface DrawerLayout.DrawerListener

监听器用于监控有关抽屉的事件。

class DrawerLayout.LayoutParams

 

class DrawerLayout.SavedState

状态在实例中持续存在

class DrawerLayout.SimpleDrawerListener

DrawerLayout.DrawerListener所有方法的存根/不带操作实现。

Inherited XML attributes

From class android.view.ViewGroup
From class android.view.View

Constants

int LOCK_MODE_LOCKED_CLOSED

抽屉锁定关闭。

int LOCK_MODE_LOCKED_OPEN

抽屉锁定打开。

int LOCK_MODE_UNDEFINED

抽屉的锁定状态被重置为默认值。

int LOCK_MODE_UNLOCKED

抽屉被解锁。

int STATE_DRAGGING

表示抽屉当前正在被用户拖动。

int STATE_IDLE

表示任何抽屉处于闲置状态。

int STATE_SETTLING

表示抽屉正在安置到最终位置。

Inherited constants

From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

DrawerLayout(Context context)
DrawerLayout(Context context, AttributeSet attrs)
DrawerLayout(Context context, AttributeSet attrs, int defStyle)

Public methods

void addDrawerListener(DrawerLayout.DrawerListener listener)

将指定的侦听器添加到将通知抽屉事件的侦听器列表。

void addFocusables(ArrayList<View> views, int direction, int focusableMode)

将视图后代的任何可聚焦视图添加到视图中(可能包括该视图,如果它本身是可聚焦的话)。

void addView(View child, int index, ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

void closeDrawer(View drawerView)

将指定的抽屉视图关闭到视图中关闭它。

void closeDrawer(int gravity)

将指定的抽屉通过动画将其关闭,从而关闭指定的抽屉。

void closeDrawer(View drawerView, boolean animate)

关闭指定的抽屉视图。

void closeDrawer(int gravity, boolean animate)

关闭指定的抽屉。

void closeDrawers()

将所有当前打开的抽屉视图关闭,以关闭它们。

void computeScroll()

由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。

ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

float getDrawerElevation()

抽屉相对于父项的基本高程(以像素为单位)。

int getDrawerLockMode(int edgeGravity)

用给定的重力检查抽屉的锁定模式。

int getDrawerLockMode(View drawerView)

检查给定抽屉视图的锁定模式。

CharSequence getDrawerTitle(int edgeGravity)

用给定的重力返回抽屉的标题。

Drawable getStatusBarBackgroundDrawable()

获取用于绘制状态栏的插入区域的绘图。

boolean isDrawerOpen(View drawer)

检查给定的抽屉视图当前是否处于打开状态。

boolean isDrawerOpen(int drawerGravity)

检查给定的抽屉视图当前是否处于打开状态。

boolean isDrawerVisible(View drawer)

检查给定的抽屉视图当前是否可以在屏幕上看到。

boolean isDrawerVisible(int drawerGravity)

检查给定的抽屉视图当前是否可以在屏幕上看到。

void onDraw(Canvas c)

实施这个来做你的绘画。

boolean onInterceptTouchEvent(MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。

boolean onKeyDown(int keyCode, KeyEvent event)

KeyEvent.Callback.onKeyDown()默认实现:当 KEYCODE_DPAD_CENTERKEYCODE_ENTER被释放时,如果视图已启用并且可点击,则执行按下视图。

boolean onKeyUp(int keyCode, KeyEvent event)

的默认实现 KeyEvent.Callback.onKeyUp() :当视图进行点击 KEYCODE_DPAD_CENTERKEYCODE_ENTER或者 KEYCODE_SPACE被释放。

void onRtlPropertiesChanged(int layoutDirection)

当任何RTL属性(布局方向或文本方向或文本对齐)已被更改时调用。

boolean onTouchEvent(MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

void openDrawer(View drawerView, boolean animate)

打开指定的抽屉视图。

void openDrawer(View drawerView)

通过将其指定到视图中来打开指定的抽屉视图。

void openDrawer(int gravity)

将指定的抽屉动画化,从而打开指定的抽屉。

void openDrawer(int gravity, boolean animate)

打开指定的抽屉。

void removeDrawerListener(DrawerLayout.DrawerListener listener)

从将通知抽屉事件的侦听器列表中删除指定的侦听器。

void requestDisallowInterceptTouchEvent(boolean disallowIntercept)

当孩子不希望这个父母及其祖先用 onInterceptTouchEvent(MotionEvent)拦截触摸事件时 onInterceptTouchEvent(MotionEvent)

void requestLayout()

当事情发生变化时调用它,这已经使这个视图的布局无效。

void setDrawerElevation(float elevation)

设置抽屉相对于父项的基本高程(以像素为单位)。

void setDrawerListener(DrawerLayout.DrawerListener listener)

此方法已弃用。 使用addDrawerListener(DrawerListener)

void setDrawerLockMode(int lockMode, View drawerView)

启用或禁用与给定抽屉的交互。

void setDrawerLockMode(int lockMode)

启用或禁用与所有抽屉的交互。

void setDrawerLockMode(int lockMode, int edgeGravity)

启用或禁用与给定抽屉的交互。

void setDrawerShadow(int resId, int gravity)

设置用于左侧或右侧阴影的简单绘图。

void setDrawerShadow(Drawable shadowDrawable, int gravity)

设置用于左侧或右侧阴影的简单绘图。

void setDrawerTitle(int edgeGravity, CharSequence title)

用给定的重力设置抽屉的标题。

void setScrimColor(int color)

设置一种颜色用于在抽屉打开时遮挡主要内容的稀松布。

void setStatusBarBackground(Drawable bg)

设置一个drawable在状态栏的insets区域绘制。

void setStatusBarBackground(int resId)

设置一个drawable在状态栏的insets区域绘制。

void setStatusBarBackgroundColor(int color)

设置一个drawable在状态栏的insets区域绘制。

Protected methods

boolean checkLayoutParams(ViewGroup.LayoutParams p)
boolean drawChild(Canvas canvas, View child, long drawingTime)

绘制这个视图组的一个孩子。

ViewGroup.LayoutParams generateDefaultLayoutParams()

返回一组默认布局参数。

ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。

void onAttachedToWindow()

这在视图附加到窗口时被调用。

void onDetachedFromWindow()

这是在视图从窗口分离时调用的。

void onLayout(boolean changed, int l, int t, int r, int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

void onRestoreInstanceState(Parcelable state)

吊钩允许视图重新应用以前由 onSaveInstanceState()生成的内部状态的表示。

Parcelable onSaveInstanceState()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。

Inherited methods

From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.view.ViewParent
From interface android.view.ViewManager
From interface android.graphics.drawable.Drawable.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.accessibility.AccessibilityEventSource

Constants

LOCK_MODE_LOCKED_CLOSED

int LOCK_MODE_LOCKED_CLOSED

抽屉锁定关闭。 用户可能无法打开它,尽管应用程序可能会以编程方式打开它。

常数值:1(0x00000001)

LOCK_MODE_LOCKED_OPEN

int LOCK_MODE_LOCKED_OPEN

抽屉锁定打开。 用户可能不会关闭它,尽管应用程序可能会以编程方式关闭它。

常量值:2(0x00000002)

LOCK_MODE_UNDEFINED

int LOCK_MODE_UNDEFINED

抽屉的锁定状态被重置为默认值。

常量值:3(0x00000003)

LOCK_MODE_UNLOCKED

int LOCK_MODE_UNLOCKED

抽屉被解锁。

常量值:0(0x00000000)

STATE_DRAGGING

int STATE_DRAGGING

表示抽屉当前正在被用户拖动。

常数值:1(0x00000001)

STATE_IDLE

int STATE_IDLE

表示任何抽屉处于闲置状态。 没有动画正在进行中。

常量值:0(0x00000000)

STATE_SETTLING

int STATE_SETTLING

表示抽屉正在安置到最终位置。

常量值:2(0x00000002)

Public constructors

DrawerLayout

DrawerLayout (Context context)

Parameters
context Context

DrawerLayout

DrawerLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

DrawerLayout

DrawerLayout (Context context, 
                AttributeSet attrs, 
                int defStyle)

Parameters
context Context
attrs AttributeSet
defStyle int

Public methods

addDrawerListener

void addDrawerListener (DrawerLayout.DrawerListener listener)

将指定的侦听器添加到将通知抽屉事件的侦听器列表。

Parameters
listener DrawerLayout.DrawerListener: Listener to notify when drawer events occur.

也可以看看:

addFocusables

void addFocusables (ArrayList<View> views, 
                int direction, 
                int focusableMode)

将视图后代的任何可聚焦视图添加到视图中(可能包括该视图,如果它本身是可聚焦的话)。 如果我们处于触摸模式,则该方法会添加所有可聚焦视图,或者只有在触摸模式下可以聚焦的视图才可以聚焦;如果根据可聚焦模式参数启用了辅助功能,则只有可以使用辅助焦点的视图。

Parameters
views ArrayList: Focusable views found so far or null if all we are interested is the number of focusables.
direction int: The direction of the focus.
focusableMode int: The type of focusables to be added.

addView

void addView (View child, 
                int index, 
                ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

注意:不要调用此方法 draw(android.graphics.Canvas)onDraw(android.graphics.Canvas)dispatchDraw(android.graphics.Canvas)或任何相关方法。

Parameters
child View: the child view to add
index int: the position at which to add the child or -1 to add last
params ViewGroup.LayoutParams: the layout parameters to set on the child

closeDrawer

void closeDrawer (View drawerView)

将指定的抽屉视图关闭到视图中关闭它。

Parameters
drawerView View: Drawer view to close

closeDrawer

void closeDrawer (int gravity)

将指定的抽屉通过动画将其关闭,从而关闭指定的抽屉。

Parameters
gravity int: Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right. GravityCompat.START or GravityCompat.END may also be used.

closeDrawer

void closeDrawer (View drawerView, 
                boolean animate)

关闭指定的抽屉视图。

Parameters
drawerView View: Drawer view to close
animate boolean: Whether closing of the drawer should be animated.

closeDrawer

void closeDrawer (int gravity, 
                boolean animate)

关闭指定的抽屉。

Parameters
gravity int: Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right. GravityCompat.START or GravityCompat.END may also be used.
animate boolean: Whether closing of the drawer should be animated.

closeDrawers

void closeDrawers ()

将所有当前打开的抽屉视图关闭,以关闭它们。

computeScroll

void computeScroll ()

由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。 这通常会在孩子使用Scroller对象动画滚动时Scroller

generateLayoutParams

ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

Parameters
attrs AttributeSet: the attributes to build the layout parameters from
Returns
ViewGroup.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

getDrawerElevation

float getDrawerElevation ()

抽屉相对于父项的基本高程(以像素为单位)。 请注意,高程更改仅在API 21及更高版本中受支持。 对于不支持的API级别,0将作为高程返回。

Returns
float The base depth position of the view, in pixels.

getDrawerLockMode

int getDrawerLockMode (int edgeGravity)

用给定的重力检查抽屉的锁定模式。

Parameters
edgeGravity int: Gravity of the drawer to check
Returns
int one of LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED or LOCK_MODE_LOCKED_OPEN.

getDrawerLockMode

int getDrawerLockMode (View drawerView)

检查给定抽屉视图的锁定模式。

Parameters
drawerView View: Drawer view to check lock mode
Returns
int one of LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED or LOCK_MODE_LOCKED_OPEN.

getDrawerTitle

CharSequence getDrawerTitle (int edgeGravity)

用给定的重力返回抽屉的标题。

Parameters
edgeGravity int: Gravity.LEFT, RIGHT, START or END. Expresses which drawer to return the title for.
Returns
CharSequence The title of the drawer, or null if none set.

也可以看看:

getStatusBarBackgroundDrawable

Drawable getStatusBarBackgroundDrawable ()

获取用于绘制状态栏的插入区域的绘图。

Returns
Drawable The status bar background drawable, or null if none set

isDrawerOpen

boolean isDrawerOpen (View drawer)

检查给定的抽屉视图当前是否处于打开状态。 要被认为是“开放”,抽屉必须处于完全可见的状态。 检查部分可视性使用isDrawerVisible(android.view.View)

Parameters
drawer View: Drawer view to check
Returns
boolean true if the given drawer view is in an open state

也可以看看:

isDrawerOpen

boolean isDrawerOpen (int drawerGravity)

检查给定的抽屉视图当前是否处于打开状态。 要被认为是“开放”,抽屉必须处于完全可见的状态。 如果没有给定重力的抽屉,则此方法将返回错误。

Parameters
drawerGravity int: Gravity of the drawer to check
Returns
boolean true if the given drawer view is in an open state

isDrawerVisible

boolean isDrawerVisible (View drawer)

检查给定的抽屉视图当前是否可以在屏幕上看到。 抽屉可能只能窥视屏幕,完全展开,或者处于中间的任何位置。

Parameters
drawer View: Drawer view to check
Returns
boolean true if the given drawer is visible on-screen

也可以看看:

isDrawerVisible

boolean isDrawerVisible (int drawerGravity)

检查给定的抽屉视图当前是否可以在屏幕上看到。 抽屉可能只能窥视屏幕,完全展开,或者介于两者之间的任何地方。 如果没有给定重力的抽屉,则此方法将返回错误。

Parameters
drawerGravity int: Gravity of the drawer to check
Returns
boolean true if the given drawer is visible on-screen

onDraw

void onDraw (Canvas c)

实施这个来做你的绘画。

Parameters
c Canvas: the canvas on which the background will be drawn

onInterceptTouchEvent

boolean onInterceptTouchEvent (MotionEvent ev)

实施此方法来拦截所有触摸屏幕动作事件。 这允许您在事件发送给您的孩子时观看事件,并在任何时候掌握当前手势的所有权。

使用这个函数需要注意,因为它与View.onTouchEvent(MotionEvent)有一个相当复杂的交互,并且使用它需要以正确的方式执行该方法。 活动将按以下顺序收到:

  1. You will receive the down event here.
  2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
  3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
  4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.

Parameters
ev MotionEvent: The motion event being dispatched down the hierarchy.
Returns
boolean Return true to steal motion events from the children and have them dispatched to this ViewGroup through onTouchEvent(). The current target will receive an ACTION_CANCEL event, and no further messages will be delivered here.

onKeyDown

boolean onKeyDown (int keyCode, 
                KeyEvent event)

KeyEvent.Callback.onKeyDown()默认实现:在 KEYCODE_DPAD_CENTERKEYCODE_ENTER被释放时执行按下视图,如果视图已启用并且可点击。

软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。

Parameters
keyCode int: a key code that represents the button pressed, from KeyEvent
event KeyEvent: the KeyEvent object that defines the button action
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onKeyUp

boolean onKeyUp (int keyCode, 
                KeyEvent event)

的默认实现 KeyEvent.Callback.onKeyUp() :当视图进行点击 KEYCODE_DPAD_CENTERKEYCODE_ENTER或者 KEYCODE_SPACE被释放。

软件键盘中的按键通常不会触发这个监听器,尽管在某些情况下有些人会选择这样做。 不要依靠这个来捕捉软件按键。

Parameters
keyCode int: A key code that represents the button pressed, from KeyEvent.
event KeyEvent: The KeyEvent object that defines the button action.
Returns
boolean If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

onRtlPropertiesChanged

void onRtlPropertiesChanged (int layoutDirection)

当任何RTL属性(布局方向或文本方向或文本对齐)已被更改时调用。 子类需要重写此方法以处理依赖于已解析布局方向的缓存信息,或通知继承其布局方向的子视图。 默认实现什么都不做。

Parameters
layoutDirection int: the direction of the layout

onTouchEvent

boolean onTouchEvent (MotionEvent ev)

实现此方法来处理触摸屏幕动作事件。

如果使用此方法检测点击操作,建议通过执行并调用performClick()来执行操作。 这将确保一致的系统行为,包括:

  • obeying click sound preferences
  • dispatching OnClickListener calls
  • handling ACTION_CLICK when accessibility features are enabled

Parameters
ev MotionEvent: The motion event.
Returns
boolean True if the event was handled, false otherwise.

openDrawer

void openDrawer (View drawerView, 
                boolean animate)

打开指定的抽屉视图。

Parameters
drawerView View: Drawer view to open
animate boolean: Whether opening of the drawer should be animated.

openDrawer

void openDrawer (View drawerView)

通过将其指定到视图中来打开指定的抽屉视图。

Parameters
drawerView View: Drawer view to open

openDrawer

void openDrawer (int gravity)

将指定的抽屉动画化,从而打开指定的抽屉。

Parameters
gravity int: Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right. GravityCompat.START or GravityCompat.END may also be used.

openDrawer

void openDrawer (int gravity, 
                boolean animate)

打开指定的抽屉。

Parameters
gravity int: Gravity.LEFT to move the left drawer or Gravity.RIGHT for the right. GravityCompat.START or GravityCompat.END may also be used.
animate boolean: Whether opening of the drawer should be animated.

removeDrawerListener

void removeDrawerListener (DrawerLayout.DrawerListener listener)

从将通知抽屉事件的侦听器列表中删除指定的侦听器。

Parameters
listener DrawerLayout.DrawerListener: Listener to remove from being notified of drawer events

也可以看看:

requestDisallowInterceptTouchEvent

void requestDisallowInterceptTouchEvent (boolean disallowIntercept)

当孩子不希望这个父母及其祖先用 onInterceptTouchEvent(MotionEvent)拦截触摸事件时 onInterceptTouchEvent(MotionEvent)

这位家长应该将此通知传递给其父母。 这位家长必须在接触期间服从这个要求(也就是说,只有在这位家长收到了或取消后才清除标志。

Parameters
disallowIntercept boolean: True if the child does not want the parent to intercept touch events.

requestLayout

void requestLayout ()

当事情发生变化时调用它,这已经使这个视图的布局无效。 这将安排视图树的布局传递。 当视图层次结构当前处于布局阶段时( isInLayout()不应该调用此视图层次结构( isInLayout() 。如果发生布局,则可以在当前布局阶段结束时(然后布局将再次运行)或当前帧结束后绘制并发生下一个布局。

覆盖此方法的子类应调用超类方法以正确处理可能的布局错误请求。

setDrawerElevation

void setDrawerElevation (float elevation)

设置抽屉相对于父项的基本高程(以像素为单位)。 请注意,高程更改仅在API 21及更高版本中受支持。

Parameters
elevation float: The base depth position of the view, in pixels.

setDrawerListener

void setDrawerListener (DrawerLayout.DrawerListener listener)

此方法已弃用。
使用addDrawerListener(DrawerListener)

设置一个监听器来通知抽屉事件。 请注意,此方法已弃用,您应该使用addDrawerListener(DrawerListener)添加侦听器,并使用removeDrawerListener(DrawerListener)删除已注册的侦听器。

Parameters
listener DrawerLayout.DrawerListener: Listener to notify when drawer events occur

也可以看看:

setDrawerLockMode

void setDrawerLockMode (int lockMode, 
                View drawerView)

启用或禁用与给定抽屉的交互。

这允许应用程序限制用户打开或关闭给定抽屉的能力。 DrawerLayout仍然会以电话回应openDrawer(int)closeDrawer(int)和朋友,如果抽屉被锁定。

锁定抽屉打开或关闭将隐式打开或关闭抽屉。

Parameters
lockMode int: The new lock mode for the given drawer. One of LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED or LOCK_MODE_LOCKED_OPEN.
drawerView View: The drawer view to change the lock mode for

也可以看看:

setDrawerLockMode

void setDrawerLockMode (int lockMode)

启用或禁用与所有抽屉的交互。

这允许应用程序限制用户在此布局内打开或关闭任何抽屉的能力。 DrawerLayout仍然会以电话回应openDrawer(int)closeDrawer(int)和朋友,如果抽屉被锁定。

锁定抽屉打开或关闭将视情况隐式打开或关闭任何抽屉。

Parameters
lockMode int: The new lock mode for the given drawer. One of LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED or LOCK_MODE_LOCKED_OPEN.

setDrawerLockMode

void setDrawerLockMode (int lockMode, 
                int edgeGravity)

启用或禁用与给定抽屉的交互。

这允许应用程序限制用户打开或关闭给定抽屉的能力。 DrawerLayout仍然会以电话回应openDrawer(int)closeDrawer(int)和朋友,如果抽屉被锁定。

锁定抽屉打开或关闭将隐式打开或关闭抽屉。

Parameters
lockMode int: The new lock mode for the given drawer. One of LOCK_MODE_UNLOCKED, LOCK_MODE_LOCKED_CLOSED or LOCK_MODE_LOCKED_OPEN.
edgeGravity int: Gravity.LEFT, RIGHT, START or END. Expresses which drawer to change the mode for.

也可以看看:

setDrawerShadow

void setDrawerShadow (int resId, 
                int gravity)

设置用于左侧或右侧阴影的简单绘图。 提供的drawable必须具有非零的内部宽度。 对于API 21及更高版本,将在抽屉上设置标高而不是所提供的可绘制标高。

请注意,为了更好地支持从左到右和从右到左的布局方向,可以使用针对API 17的资源限定符“ldrtl”来定义RTL布局的可绘制(除了LTR布局中的一个)以上与重力START 或者,对于API 23及更高版本,绘图可自动镜像,以使绘图将在RTL布局中镜像。

Parameters
resId int: Resource id of a shadow drawable to use at the edge of a drawer
gravity int: Which drawer the shadow should apply to

setDrawerShadow

void setDrawerShadow (Drawable shadowDrawable, 
                int gravity)

设置用于左侧或右侧阴影的简单绘图。 提供的drawable必须具有非零的内部宽度。 对于API 21及更高版本,将在抽屉上设置标高而不是所提供的可绘制标高。

请注意,为了更好地支持从左到右和从右到左的布局方向,可以使用针对API 17的资源限定符“ldrtl”来定义RTL布局的可绘制(除了LTR布局中的一个)以上与重力START 或者,对于API 23及更高版本,绘图可自动镜像,以使绘图将在RTL布局中镜像。

Parameters
shadowDrawable Drawable: Shadow drawable to use at the edge of a drawer
gravity int: Which drawer the shadow should apply to

setDrawerTitle

void setDrawerTitle (int edgeGravity, 
                CharSequence title)

用给定的重力设置抽屉的标题。

当启用辅助功能时,这是用于标识活动辅助功能服务的抽屉的标题。

Parameters
edgeGravity int: Gravity.LEFT, RIGHT, START or END. Expresses which drawer to set the title for.
title CharSequence: The title for the drawer.

setScrimColor

void setScrimColor (int color)

设置一种颜色用于在抽屉打开时遮挡主要内容的稀松布。

Parameters
color int: Color to use in 0xAARRGGBB format.

setStatusBarBackground

void setStatusBarBackground (Drawable bg)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
bg Drawable: Background drawable to draw behind the status bar

setStatusBarBackground

void setStatusBarBackground (int resId)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
resId int: Resource id of a background drawable to draw behind the status bar

setStatusBarBackgroundColor

void setStatusBarBackgroundColor (int color)

设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

Parameters
color int: Color to use as a background drawable to draw behind the status bar in 0xAARRGGBB format.

Protected methods

checkLayoutParams

boolean checkLayoutParams (ViewGroup.LayoutParams p)

Parameters
p ViewGroup.LayoutParams
Returns
boolean

drawChild

boolean drawChild (Canvas canvas, 
                View child, 
                long drawingTime)

绘制这个视图组的一个孩子。 这个方法负责让画布处于正确的状态。 这包括剪裁,翻译,以便孩子的滚动起点在0,0,并应用任何动画转换。

Parameters
canvas Canvas: The canvas on which to draw the child
child View: Who to draw
drawingTime long: The time at which draw is occurring
Returns
boolean True if an invalidate() was issued

generateDefaultLayoutParams

ViewGroup.LayoutParams generateDefaultLayoutParams ()

返回一组默认布局参数。 当传递给addView(View)的视图没有设置布局参数时,请求这些参数。 如果返回null,则会从addView引发异常。

Returns
ViewGroup.LayoutParams a set of default layout parameters or null

generateLayoutParams

ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。 当一个ViewGroup被传递了一个View,其布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)的测试时,这个方法被调用。 此方法应该返回一组适合此ViewGroup的布局参数,可能是通过从指定的一组布局参数中复制适当的属性。

Parameters
p ViewGroup.LayoutParams: The layout parameters to convert into a suitable set of layout parameters for this ViewGroup.
Returns
ViewGroup.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

onAttachedToWindow

void onAttachedToWindow ()

这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此函数保证在onDraw(android.graphics.Canvas)之前onDraw(android.graphics.Canvas) ,但可以在第一次onDraw之前的任何时候调用 - 包括onMeasure(int, int)之前或之后。

onDetachedFromWindow

void onDetachedFromWindow ()

这是在视图从窗口分离时调用的。 此时它不再有绘图表面。

onLayout

void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。

Parameters
changed boolean: This is a new size or position for this view
l int: Left position, relative to parent
t int: Top position, relative to parent
r int: Right position, relative to parent
b int: Bottom position, relative to parent

onMeasure

void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时,您必须致电setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 如果不这样做,将触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一种有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

吊钩允许视图重新应用以前由onSaveInstanceState()生成的内部状态的表示。 这个函数永远不会被调用为null状态。

Parameters
state Parcelable: The frozen state that had previously been returned by onSaveInstanceState().

onSaveInstanceState

Parcelable onSaveInstanceState ()

钩子允许视图生成其内部状态的表示,稍后可用于创建具有相同状态的新实例。 此状态应仅包含不持久或以后不能重建的信息。 例如,您永远不会将当前位置存储在屏幕上,因为当视图的新实例放置在其视图层次结构中时会再次计算该位置。

您可能在此处存储的某些示例:文本视图中的当前光标位置(但通常不是文本本身,因为它存储在内容提供程序或其他永久性存储中),即当前在列表视图中选择的项目。

Returns
Parcelable Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

Hooray!