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 。
Nested classes |
|
---|---|
interface |
DrawerLayout.DrawerListener 监听器用于监控有关抽屉的事件。 |
class |
DrawerLayout.LayoutParams
|
class |
DrawerLayout.SavedState 状态在实例中持续存在 |
class |
DrawerLayout.SimpleDrawerListener |
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)
|
boolean |
onKeyUp(int keyCode, KeyEvent event) 的默认实现 |
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) 当孩子不希望这个父母及其祖先用 |
void |
requestLayout() 当事情发生变化时调用它,这已经使这个视图的布局无效。 |
void |
setDrawerElevation(float elevation) 设置抽屉相对于父项的基本高程(以像素为单位)。 |
void |
setDrawerListener(DrawerLayout.DrawerListener listener) 此方法已弃用。 使用 |
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) 吊钩允许视图重新应用以前由 |
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
|
int LOCK_MODE_LOCKED_CLOSED
抽屉锁定关闭。 用户可能无法打开它,尽管应用程序可能会以编程方式打开它。
常数值:1(0x00000001)
int LOCK_MODE_LOCKED_OPEN
抽屉锁定打开。 用户可能不会关闭它,尽管应用程序可能会以编程方式关闭它。
常量值:2(0x00000002)
int LOCK_MODE_UNDEFINED
抽屉的锁定状态被重置为默认值。
常量值:3(0x00000003)
int LOCK_MODE_UNLOCKED
抽屉被解锁。
常量值:0(0x00000000)
int STATE_DRAGGING
表示抽屉当前正在被用户拖动。
常数值:1(0x00000001)
int STATE_IDLE
表示任何抽屉处于闲置状态。 没有动画正在进行中。
常量值:0(0x00000000)
int STATE_SETTLING
表示抽屉正在安置到最终位置。
常量值:2(0x00000002)
DrawerLayout (Context context, AttributeSet attrs)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
DrawerLayout (Context context, AttributeSet attrs, int defStyle)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
defStyle |
int
|
void addDrawerListener (DrawerLayout.DrawerListener listener)
将指定的侦听器添加到将通知抽屉事件的侦听器列表。
Parameters | |
---|---|
listener |
DrawerLayout.DrawerListener : Listener to notify when drawer events occur. |
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. |
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 |
void closeDrawer (View drawerView)
将指定的抽屉视图关闭到视图中关闭它。
Parameters | |
---|---|
drawerView |
View : Drawer view to close |
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. |
void closeDrawer (View drawerView, boolean animate)
关闭指定的抽屉视图。
Parameters | |
---|---|
drawerView |
View : Drawer view to close |
animate |
boolean : Whether closing of the drawer should be animated. |
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. |
void closeDrawers ()
将所有当前打开的抽屉视图关闭,以关闭它们。
void computeScroll ()
由父级调用,以请求孩子在必要时更新mScrollX和mScrollY的值。 这通常会在孩子使用Scroller
对象动画滚动时Scroller
。
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 |
float getDrawerElevation ()
抽屉相对于父项的基本高程(以像素为单位)。 请注意,高程更改仅在API 21及更高版本中受支持。 对于不支持的API级别,0将作为高程返回。
Returns | |
---|---|
float |
The base depth position of the view, in pixels. |
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 . |
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 . |
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. |
Drawable getStatusBarBackgroundDrawable ()
获取用于绘制状态栏的插入区域的绘图。
Returns | |
---|---|
Drawable |
The status bar background drawable, or null if none set |
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 |
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 |
boolean isDrawerVisible (View drawer)
检查给定的抽屉视图当前是否可以在屏幕上看到。 抽屉可能只能窥视屏幕,完全展开,或者处于中间的任何位置。
Parameters | |
---|---|
drawer |
View : Drawer view to check |
Returns | |
---|---|
boolean |
true if the given drawer is visible on-screen |
boolean isDrawerVisible (int drawerGravity)
检查给定的抽屉视图当前是否可以在屏幕上看到。 抽屉可能只能窥视屏幕,完全展开,或者介于两者之间的任何地方。 如果没有给定重力的抽屉,则此方法将返回错误。
Parameters | |
---|---|
drawerGravity |
int : Gravity of the drawer to check |
Returns | |
---|---|
boolean |
true if the given drawer is visible on-screen |
void onDraw (Canvas c)
实施这个来做你的绘画。
Parameters | |
---|---|
c |
Canvas : the canvas on which the background will be drawn |
boolean onInterceptTouchEvent (MotionEvent ev)
实施此方法来拦截所有触摸屏幕动作事件。 这允许您在事件发送给您的孩子时观看事件,并在任何时候掌握当前手势的所有权。
使用这个函数需要注意,因为它与View.onTouchEvent(MotionEvent)
有一个相当复杂的交互,并且使用它需要以正确的方式执行该方法。 活动将按以下顺序收到:
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. |
boolean onKeyDown (int keyCode, KeyEvent event)
KeyEvent.Callback.onKeyDown()
默认实现:在 KEYCODE_DPAD_CENTER
或 KEYCODE_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. |
boolean onKeyUp (int keyCode, KeyEvent event)
的默认实现 KeyEvent.Callback.onKeyUp()
:当视图进行点击 KEYCODE_DPAD_CENTER
, KEYCODE_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. |
void onRtlPropertiesChanged (int layoutDirection)
当任何RTL属性(布局方向或文本方向或文本对齐)已被更改时调用。 子类需要重写此方法以处理依赖于已解析布局方向的缓存信息,或通知继承其布局方向的子视图。 默认实现什么都不做。
Parameters | |
---|---|
layoutDirection |
int : the direction of the layout |
boolean onTouchEvent (MotionEvent ev)
实现此方法来处理触摸屏幕动作事件。
如果使用此方法检测点击操作,建议通过执行并调用performClick()
来执行操作。 这将确保一致的系统行为,包括:
ACTION_CLICK
when accessibility features are enabled Parameters | |
---|---|
ev |
MotionEvent : The motion event. |
Returns | |
---|---|
boolean |
True if the event was handled, false otherwise. |
void openDrawer (View drawerView, boolean animate)
打开指定的抽屉视图。
Parameters | |
---|---|
drawerView |
View : Drawer view to open |
animate |
boolean : Whether opening of the drawer should be animated. |
void openDrawer (View drawerView)
通过将其指定到视图中来打开指定的抽屉视图。
Parameters | |
---|---|
drawerView |
View : Drawer view to open |
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. |
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. |
void removeDrawerListener (DrawerLayout.DrawerListener listener)
从将通知抽屉事件的侦听器列表中删除指定的侦听器。
Parameters | |
---|---|
listener |
DrawerLayout.DrawerListener : Listener to remove from being notified of drawer events |
void requestDisallowInterceptTouchEvent (boolean disallowIntercept)
当孩子不希望这个父母及其祖先用 onInterceptTouchEvent(MotionEvent)
拦截触摸事件时 onInterceptTouchEvent(MotionEvent)
。
这位家长应该将此通知传递给其父母。 这位家长必须在接触期间服从这个要求(也就是说,只有在这位家长收到了或取消后才清除标志。
Parameters | |
---|---|
disallowIntercept |
boolean : True if the child does not want the parent to intercept touch events. |
void requestLayout ()
当事情发生变化时调用它,这已经使这个视图的布局无效。 这将安排视图树的布局传递。 当视图层次结构当前处于布局阶段时( isInLayout()
不应该调用此视图层次结构( isInLayout()
。如果发生布局,则可以在当前布局阶段结束时(然后布局将再次运行)或当前帧结束后绘制并发生下一个布局。
覆盖此方法的子类应调用超类方法以正确处理可能的布局错误请求。
void setDrawerElevation (float elevation)
设置抽屉相对于父项的基本高程(以像素为单位)。 请注意,高程更改仅在API 21及更高版本中受支持。
Parameters | |
---|---|
elevation |
float : The base depth position of the view, in pixels. |
void setDrawerListener (DrawerLayout.DrawerListener listener)
此方法已弃用。
使用addDrawerListener(DrawerListener)
设置一个监听器来通知抽屉事件。 请注意,此方法已弃用,您应该使用addDrawerListener(DrawerListener)
添加侦听器,并使用removeDrawerListener(DrawerListener)
删除已注册的侦听器。
Parameters | |
---|---|
listener |
DrawerLayout.DrawerListener : Listener to notify when drawer events occur |
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 |
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 . |
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. |
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 |
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 |
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. |
void setScrimColor (int color)
设置一种颜色用于在抽屉打开时遮挡主要内容的稀松布。
Parameters | |
---|---|
color |
int : Color to use in 0xAARRGGBB format. |
void setStatusBarBackground (Drawable bg)
设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。
Parameters | |
---|---|
bg |
Drawable : Background drawable to draw behind the status bar |
void setStatusBarBackground (int resId)
设置一个drawable在状态栏的insets区域绘制。 请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。
Parameters | |
---|---|
resId |
int : Resource id of a background drawable to draw behind the status bar |
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. |
boolean checkLayoutParams (ViewGroup.LayoutParams p)
Parameters | |
---|---|
p |
ViewGroup.LayoutParams
|
Returns | |
---|---|
boolean |
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 |
ViewGroup.LayoutParams generateDefaultLayoutParams ()
返回一组默认布局参数。 当传递给addView(View)
的视图没有设置布局参数时,请求这些参数。 如果返回null,则会从addView引发异常。
Returns | |
---|---|
ViewGroup.LayoutParams |
a set of default layout parameters or null |
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 |
void onAttachedToWindow ()
这在视图附加到窗口时被调用。 此时它有一个Surface并将开始绘制。 请注意,此函数保证在onDraw(android.graphics.Canvas)
之前onDraw(android.graphics.Canvas)
,但可以在第一次onDraw之前的任何时候调用 - 包括onMeasure(int, int)
之前或之后。
void onDetachedFromWindow ()
这是在视图从窗口分离时调用的。 此时它不再有绘图表面。
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 |
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 . |
void onRestoreInstanceState (Parcelable state)
吊钩允许视图重新应用以前由onSaveInstanceState()
生成的内部状态的表示。 这个函数永远不会被调用为null状态。
Parameters | |
---|---|
state |
Parcelable : The frozen state that had previously been returned by 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. |