Most visited

Recently visited

AppBarLayout

public class AppBarLayout
extends LinearLayout

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.LinearLayout
         ↳ android.support.design.widget.AppBarLayout


AppBarLayout是一个垂直的 LinearLayout ,它实现了许多材质设计应用栏概念的功能,即滚动手势。

儿童应通过 setScrollFlags(int)和关联的布局xml属性 app:layout_scrollFlags提供其所需的滚动行为。

这个观点在很大程度上取决于被用作CoordinatorLayout内的直接孩子。 如果您在不同的ViewGroup使用AppBarLayout,则其大部分功能都不起作用。

AppBarLayout还需要单独的滚动兄弟才能知道何时滚动。 绑定通过AppBarLayout.ScrollingViewBehavior行为类完成,这意味着您应该将滚动视图的行为设置为AppBarLayout.ScrollingViewBehavior的实例。 包含完整类名的字符串资源可用。

 <android.support.design.widget.CoordinatorLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:layout_width="match_parent"
         android:layout_height="match_parent">

     <android.support.v4.widget.NestedScrollView
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:layout_behavior="@string/appbar_scrolling_view_behavior">

         <!-- Your scrolling content -->

     </android.support.v4.widget.NestedScrollView>

     <android.support.design.widget.AppBarLayout
             android:layout_height="wrap_content"
             android:layout_width="match_parent">

         <android.support.v7.widget.Toolbar
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

         <android.support.design.widget.TabLayout
                 ...
                 app:layout_scrollFlags="scroll|enterAlways"/>

     </android.support.design.widget.AppBarLayout>

 </android.support.design.widget.CoordinatorLayout>
 

也可以看看:

Summary

Nested classes

class AppBarLayout.Behavior

AppBarLayout.Behavior的默认AppBarLayout

class AppBarLayout.LayoutParams

 

interface AppBarLayout.OnOffsetChangedListener

AppBarLayout的垂直偏移更改时调用回调的接口定义。

class AppBarLayout.ScrollingViewBehavior

View应该使用的行为,它可以垂直滚动并支持嵌套滚动以自动滚动任何AppBarLayout兄弟姐妹。

XML attributes

android.support.design:elevation Deprecated. 
android.support.design:expanded The initial expanded state for the AppBarLayout. 

Inherited XML attributes

From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View

Inherited constants

From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

AppBarLayout(Context context)
AppBarLayout(Context context, AttributeSet attrs)

Public methods

void addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener listener)

添加一个侦听器,当这个 AppBarLayout的偏移量改变时将被调用。

AppBarLayout.LayoutParams generateLayoutParams(AttributeSet attrs)

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

float getTargetElevation()

此方法已弃用。 目标海拔已被弃用。 AppBarLayout的高程现在通过StateListAnimator控制。 此方法现在总是返回0。

final int getTotalScrollRange()

返回所有孩子的滚动范围。

void removeOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener listener)

删除以前添加的 AppBarLayout.OnOffsetChangedListener

void setExpanded(boolean expanded, boolean animate)

设置此 AppBarLayout是否展开。

void setExpanded(boolean expanded)

设置此 AppBarLayout是否展开,如果它已经布置,则为动画。

void setOrientation(int orientation)

布局应该是一列还是一列。

void setTargetElevation(float elevation)

此方法已弃用。 目标海拔已被弃用。 AppBarLayout的高程现在通过StateListAnimator控制。 如果目标仰角被设定,无论是由该方法或app:elevation attibute,一个新的状态列表动画师创建其使用给定的elevation值。

Protected methods

boolean checkLayoutParams(ViewGroup.LayoutParams p)
AppBarLayout.LayoutParams generateDefaultLayoutParams()

当布局的方向为 VERTICAL时,返回一组宽度为 MATCH_PARENT ,高度为 WRAP_CONTENT的布局 VERTICAL

AppBarLayout.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

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

int[] onCreateDrawableState(int extraSpace)

为此视图生成新的 Drawable状态。

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

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

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

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

Inherited methods

From class android.widget.LinearLayout
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

XML attributes

android.support.design:elevation

已过时。 现在通过状态列表动画器来控制高程。

可能是另一种资源的引用,其形式为“ @[+][package:]type/name ”或形式为“一个主题属性 ?[package:]type/name ”。

可能是一个字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符;

可能是整数值,例如“ 100 ”。

可能是布尔值,例如“ true ”或“ false ”。

可能是一个颜色值,形式为“ #rgb ”,“ #argb ”,“ #rrggbb#aarrggbb ”。

可能是浮点值,例如“ 1.2 ”。

可能是尺寸值,这是一个浮点数,后面跟着一个单位,如“ 14.5sp ”。 可用单位为:px(像素),dp(密度独立像素),sp(基于首选字体大小的缩放像素),单位为英寸和毫米。

可能是一个小数值,它是一个浮点数, 14.5% %或%p,例如“ 14.5% ”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。

相关方法:

android.support.design:expanded

AppBarLayout的初始展开状态。 这只有在这个视图是CoordinatorLayout的直接子节点时才会生效。

可能是一个布尔值,例如“ true ”或“ false ”。

相关方法:

Public constructors

AppBarLayout

AppBarLayout (Context context)

Parameters
context Context

AppBarLayout

AppBarLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

Public methods

addOnOffsetChangedListener

void addOnOffsetChangedListener (AppBarLayout.OnOffsetChangedListener listener)

添加一个侦听器,当这个 AppBarLayout的偏移量发生变化时将被调用。

Parameters
listener AppBarLayout.OnOffsetChangedListener: The listener that will be called when the offset changes.]

也可以看看:

generateLayoutParams

AppBarLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

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

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

getTargetElevation

float getTargetElevation ()

此方法已弃用。
目标海拔已被弃用。 AppBarLayout的高程现在通过StateListAnimator控制。 此方法现在总是返回0。

Returns
float

getTotalScrollRange

int getTotalScrollRange ()

返回所有孩子的滚动范围。

Returns
int the scroll range in px

removeOnOffsetChangedListener

void removeOnOffsetChangedListener (AppBarLayout.OnOffsetChangedListener listener)

删除以前添加的 AppBarLayout.OnOffsetChangedListener

Parameters
listener AppBarLayout.OnOffsetChangedListener: the listener to remove.

setExpanded

void setExpanded (boolean expanded, 
                boolean animate)

设置此 AppBarLayout是否展开。

AppBarLayout的滚动一样,此方法依赖于此布局是 CoordinatorLayout的直接子 CoordinatorLayout

相关XML属性:

Parameters
expanded boolean: true if the layout should be fully expanded, false if it should be fully collapsed
animate boolean: Whether to animate to the new state

setExpanded

void setExpanded (boolean expanded)

设置此 AppBarLayout是否展开,如果它已经布置,则为动画。

AppBarLayout的滚动一样,此方法依赖于此布局是 CoordinatorLayout的直接子 CoordinatorLayout

相关XML属性:

Parameters
expanded boolean: true if the layout should be fully expanded, false if it should be fully collapsed

setOrientation

void setOrientation (int orientation)

布局应该是一列还是一列。

Parameters
orientation int: Pass HORIZONTAL or VERTICAL. Default value is HORIZONTAL.

setTargetElevation

void setTargetElevation (float elevation)

此方法已弃用。
目标海拔已被弃用。 AppBarLayout的高程现在通过StateListAnimator控制。 如果目标仰角被设定,无论是由该方法或app:elevation attibute,一个新的状态列表动画师创建其使用给定的elevation值。

相关XML属性:

Parameters
elevation float

Protected methods

checkLayoutParams

boolean checkLayoutParams (ViewGroup.LayoutParams p)

Parameters
p ViewGroup.LayoutParams
Returns
boolean

generateDefaultLayoutParams

AppBarLayout.LayoutParams generateDefaultLayoutParams ()

返回与宽度的一套布局参数MATCH_PARENT及的高度WRAP_CONTENT当布局的方向是VERTICAL 当方向为HORIZONTAL ,宽度设置为WRAP_CONTENT ,高度为WRAP_CONTENT

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

generateLayoutParams

AppBarLayout.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
AppBarLayout.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

onCreateDrawableState

int[] onCreateDrawableState (int extraSpace)

为此视图生成新的Drawable状态。 当缓存的Drawable状态被确定为无效时,这由视图系统调用。 要检索当前状态,应该使用getDrawableState()

Parameters
extraSpace int: if non-zero, this is the number of extra entries you would like in the returned array in which you can place your own states.
Returns
int[] Returns an array holding the current Drawable state of the view.

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.

Hooray!