1. 程式人生 > >android官方API之Toolbar

android官方API之Toolbar

來源:https://developer.android.com/reference/android/widget/Toolbar

Toolbar

public class Toolbar 
extends ViewGroup 

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.Toolbar

 


A standard toolbar for use within application content.

A Toolbar is a generalization of action bars for use within application layouts. While an action bar is traditionally part of an Activity's opaque window decor controlled by the framework, a Toolbar may be placed at any arbitrary level of nesting within a view hierarchy. An application may choose to designate a Toolbar as the action bar for an Activity using the 

setActionBar() method.

Toolbar supports a more focused feature set than ActionBar. From start to end, a toolbar may contain a combination of the following optional elements:

  • A navigation button. This may be an Up arrow, navigation menu toggle, close, collapse, done or another glyph of the app's choosing. This button should always be used to access other navigational destinations within the container of the Toolbar and its signified content or otherwise leave the current context signified by the Toolbar. The navigation button is vertically aligned within the Toolbar's 
    minimum height
    , if set.
  • A branded logo image. This may extend to the height of the bar and can be arbitrarily wide.
  • A title and subtitle. The title should be a signpost for the Toolbar's current position in the navigation hierarchy and the content contained there. The subtitle, if present should indicate any extended information about the current content. If an app uses a logo image it should strongly consider omitting a title and subtitle.
  • One or more custom views. The application may add arbitrary child views to the Toolbar. They will appear at this position within the layout. If a child view's Toolbar.LayoutParams indicates a Gravity value ofCENTER_HORIZONTAL the view will attempt to center within the available space remaining in the Toolbar after all other elements have been measured.
  • An action menu. The menu of actions will pin to the end of the Toolbar offering a few frequent, important or typical actions along with an optional overflow menu for additional actions. Action buttons are vertically aligned within the Toolbar's minimum height, if set.

 

In modern Android UIs developers should lean more on a visually distinct color scheme for toolbars than on their application icon. The use of application icon plus title as a standard layout is discouraged on API 21 devices and newer.

 

Summary

Nested classes

class Toolbar.LayoutParams

Layout information for child views of Toolbars. 

interface Toolbar.OnMenuItemClickListener

Interface responsible for receiving menu item click events if the items themselves do not have individual item click listeners. 

XML attributes

android:buttonGravity  
android:collapseContentDescription Text to set as the content description for the collapse button. 
android:collapseIcon Icon drawable to use for the collapse button. 
android:contentInsetEnd Minimum inset for content views within a bar. 
android:contentInsetEndWithActions Minimum inset for content views within a bar when actions from a menu are present. 
android:contentInsetLeft Minimum inset for content views within a bar. 
android:contentInsetRight Minimum inset for content views within a bar. 
android:contentInsetStart Minimum inset for content views within a bar. 
android:contentInsetStartWithNavigation Minimum inset for content views within a bar when a navigation button is present, such as the Up button. 
android:gravity Specifies how an object should position its content, on both the X and Y axes, within its own bounds. 
android:logo Drawable to set as the logo that appears at the starting side of the Toolbar, just after the navigation button. 
android:logoDescription A content description string to describe the appearance of the associated logo image. 
android:maxButtonHeight  
android:navigationContentDescription Text to set as the content description for the navigation button located at the start of the toolbar. 
android:navigationIcon Icon drawable to use for the navigation button located at the start of the toolbar. 
android:popupTheme Reference to a theme that should be used to inflate popups shown by widgets in the toolbar. 
android:subtitle Specifies subtitle text used for navigationMode="normal". 
android:subtitleTextAppearance  
android:subtitleTextColor A color to apply to the subtitle string. 
android:title The title associated with the item. 
android:titleMargin Specifies extra space on the left, start, right and end sides of the toolbar's title. 
android:titleMarginBottom Specifies extra space on the bottom side of the toolbar's title. 
android:titleMarginEnd Specifies extra space on the end side of the toolbar's title. 
android:titleMarginStart Specifies extra space on the start side of the toolbar's title. 
android:titleMarginTop Specifies extra space on the top side of the toolbar's title. 
android:titleTextAppearance  
android:titleTextColor A color to apply to the title string. 

Inherited XML attributes

From class android.view.ViewGroup

From class android.view.View

Inherited constants

From class android.view.ViewGroup

From class android.view.View

Inherited fields

From class android.view.View

Public constructors

Toolbar(Context context)
Toolbar(Context context, AttributeSet attrs)
Toolbar(Context context, AttributeSet attrs, int defStyleAttr)
Toolbar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

void collapseActionView()

Collapse a currently expanded action view.

void dismissPopupMenus()

Dismiss all currently showing popup menus, including overflow or submenus.

Toolbar.LayoutParams generateLayoutParams(AttributeSet attrs)

Returns a new set of layout parameters based on the supplied attributes set.

int getContentInsetEnd()

Gets the ending content inset for this toolbar.

int getContentInsetEndWithActions()

Gets the end content inset to use when action buttons are present.

int getContentInsetLeft()

Gets the left content inset for this toolbar.

int getContentInsetRight()

Gets the right content inset for this toolbar.

int getContentInsetStart()

Gets the starting content inset for this toolbar.

int getContentInsetStartWithNavigation()

Gets the start content inset to use when a navigation button is present.

int getCurrentContentInsetEnd()

Gets the content inset that will be used on the ending side of the bar in the current toolbar configuration.

int getCurrentContentInsetLeft()

Gets the content inset that will be used on the left side of the bar in the current toolbar configuration.

int getCurrentContentInsetRight()

Gets the content inset that will be used on the right side of the bar in the current toolbar configuration.

int getCurrentContentInsetStart()

Gets the content inset that will be used on the starting side of the bar in the current toolbar configuration.

Drawable getLogo()

Return the current logo drawable.

CharSequence getLogoDescription()

Return the description of the toolbar's logo.

Menu getMenu()

Return the Menu shown in the toolbar.

CharSequence getNavigationContentDescription()

Retrieve the currently configured content description for the navigation button view.

Drawable getNavigationIcon()

Return the current drawable used as the navigation icon.

Drawable getOverflowIcon()

Return the current drawable used as the overflow icon.

int getPopupTheme()
CharSequence getSubtitle()

Return the subtitle of this toolbar.

CharSequence getTitle()

Returns the title of this toolbar.

int getTitleMarginBottom()
int getTitleMarginEnd()
int getTitleMarginStart()
int getTitleMarginTop()
boolean hasExpandedActionView()

Check whether this Toolbar is currently hosting an expanded action view.

boolean hideOverflowMenu()

Hide the overflow items from the associated menu.

void inflateMenu(int resId)

Inflate a menu resource into this toolbar.

boolean isOverflowMenuShowing()

Check whether the overflow menu is currently showing.

void onRtlPropertiesChanged(int layoutDirection)

Called when any RTL property (layout direction or text direction or text alignment) has been changed.

boolean onTouchEvent(MotionEvent ev)

Implement this method to handle touch screen motion events.

void setContentInsetEndWithActions(int insetEndWithActions)

Sets the start content inset to use when action buttons are present.

void setContentInsetStartWithNavigation(int insetStartWithNavigation)

Sets the start content inset to use when a navigation button is present.

void setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)

Sets the content insets for this toolbar.

void setContentInsetsRelative(int contentInsetStart, int contentInsetEnd)

Sets the content insets for this toolbar relative to layout direction.

void setLogo(int resId)

Set a logo drawable from a resource id.

void setLogo(Drawable drawable)

Set a logo drawable.

void setLogoDescription(int resId)

Set a description of the toolbar's logo.

void setLogoDescription(CharSequence description)

Set a description of the toolbar's logo.

void setNavigationContentDescription(CharSequence description)

Set a content description for the navigation button if one is present.

void setNavigationContentDescription(int resId)

Set a content description for the navigation button if one is present.

void setNavigationIcon(Drawable icon)

Set the icon to use for the toolbar's navigation button.

void setNavigationIcon(int resId)

Set the icon to use for the toolbar's navigation button.

void setNavigationOnClickListener(View.OnClickListener listener)

Set a listener to respond to navigation events.

void setOnMenuItemClickListener(Toolbar.OnMenuItemClickListener listener)

Set a listener to respond to menu item click events.

void setOverflowIcon(Drawable icon)

Set the icon to use for the overflow button.

void setPopupTheme(int resId)

Specifies the theme to use when inflating popup menus.

void setSubtitle(CharSequence subtitle)

Set the subtitle of this toolbar.

void setSubtitle(int resId)

Set the subtitle of this toolbar.

void setSubtitleTextAppearance(Context context, int resId)

Sets the text color, size, style, hint color, and highlight color from the specified TextAppearance resource.

void setSubtitleTextColor(int color)

Sets the text color of the subtitle, if present.

void setTitle(CharSequence title)

Set the title of this toolbar.

void setTitle(int resId)

Set the title of this toolbar.

void setTitleMargin(int start, int top, int end, int bottom)

Sets the title margin.

void setTitleMarginBottom(int margin)

Sets the bottom title margin in pixels.

void setTitleMarginEnd(int margin)

Sets the ending title margin in pixels.

void setTitleMarginStart(int margin)

Sets the starting title margin in pixels.

void setTitleMarginTop(int margin)

Sets the top title margin in pixels.

void setTitleTextAppearance(Context context, int resId)

Sets the text color, size, style, hint color, and highlight color from the specified TextAppearance resource.

void setTitleTextColor(int color)

Sets the text color of the title, if present.

boolean showOverflowMenu()

Show the overflow items from the associated menu.

Protected methods

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

Returns a set of default layout parameters.

Toolbar.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

Returns a safe set of layout parameters based on the supplied layout params.

void onAttachedToWindow()

This is called when the view is attached to a window.

void onDetachedFromWindow()

This is called when the view is detached from a window.

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

Called from layout when this view should assign a size and position to each of its children.

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

 

Measure the view and its content to determine the measured width and the measured height.

void onRestoreInstanceState(Parcelable state)

Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState().

Parcelable onSaveInstanceState()

Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state.

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

XML attributes

android:buttonGravity

 

 

android:collapseContentDescription

Text to set as the content description for the collapse button.

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character;

 

android:collapseIcon

Icon drawable to use for the collapse button.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

 

android:contentInsetEnd

Minimum inset for content views within a bar. Navigation buttons and menu views are excepted. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:contentInsetEndWithActions

Minimum inset for content views within a bar when actions from a menu are present. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:contentInsetLeft

Minimum inset for content views within a bar. Navigation buttons and menu views are excepted. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:contentInsetRight

Minimum inset for content views within a bar. Navigation buttons and menu views are excepted. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:contentInsetStart

Minimum inset for content views within a bar. Navigation buttons and menu views are excepted. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:contentInsetStartWithNavigation

Minimum inset for content views within a bar when a navigation button is present, such as the Up button. Only valid for some themes and configurations.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:gravity

Specifies how an object should position its content, on both the X and Y axes, within its own bounds.

Must be one or more (separated by '|') of the following constant values.

Constant Value Description
bottom 50 Push object to the bottom of its container, not changing its size.
center 11 Place the object in the center of its container in both the vertical and horizontal axis, not changing its size.
center_horizontal 1 Place object in the horizontal center of its container, not changing its size.
center_vertical 10 Place object in the vertical center of its container, not changing its size.
clip_horizontal 8 Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip will be based on the horizontal gravity: a left gravity will clip the right edge, a right gravity will clip the left edge, and neither will clip both edges.
clip_vertical 80 Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip will be based on the vertical gravity: a top gravity will clip the bottom edge, a bottom gravity will clip the top edge, and neither will clip both edges.
end 800005 Push object to the end of its container, not changing its size.
fill 77 Grow the horizontal and vertical size of the object if needed so it completely fills its container.
fill_horizontal 7 Grow the horizontal size of the object if needed so it completely fills its container.
fill_vertical 70 Grow the vertical size of the object if needed so it completely fills its container.
left 3 Push object to the left of its container, not changing its size.
right 5 Push object to the right of its container, not changing its size.
start 800003 Push object to the beginning of its container, not changing its size.
top 30 Push object to the top of its container, not changing its size.

 

 

Drawable to set as the logo that appears at the starting side of the Toolbar, just after the navigation button.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

 

android:logoDescription

A content description string to describe the appearance of the associated logo image.

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character;

 

android:maxButtonHeight

 

 

android:navigationContentDescription

Text to set as the content description for the navigation button located at the start of the toolbar.

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character;

 

Related methods:

android:navigationIcon

Icon drawable to use for the navigation button located at the start of the toolbar.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

 

Related methods:

android:popupTheme

Reference to a theme that should be used to inflate popups shown by widgets in the toolbar.

May be a reference to another resource, in the form "@[+][package:]type/name" or a theme attribute in the form "?[package:]type/name".

 

android:subtitle

Specifies subtitle text used for navigationMode="normal".

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character;

 

android:subtitleTextAppearance

 

 

android:subtitleTextColor

A color to apply to the subtitle string.

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

 

android:title

The title associated with the item.

May be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character;

 

android:titleMargin

Specifies extra space on the left, start, right and end sides of the toolbar's title. Margin values should be positive.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:titleMarginBottom

Specifies extra space on the bottom side of the toolbar's title. If both this attribute and titleMargin are specified, then this attribute takes precedence. Margin values should be positive.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:titleMarginEnd

Specifies extra space on the end side of the toolbar's title. If both this attribute and titleMargin are specified, then this attribute takes precedence. Margin values should be positive.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:titleMarginStart

Specifies extra space on the start side of the toolbar's title. If both this attribute and titleMargin are specified, then this attribute takes precedence. Margin values should be positive.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:titleMarginTop

Specifies extra space on the top side of the toolbar's title. If both this attribute and titleMargin are specified, then this attribute takes precedence. Margin values should be positive.

May be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), and mm (millimeters).

 

Related methods:

android:titleTextAppearance

 

 

android:titleTextColor

A color to apply to the title string.

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

 

Public constructors

Toolbar

added in API level 21

 

public Toolbar (Context context)

 

 

Parameters
context Context

 

Toolbar

added in API level 21

 

public Toolbar (Context context, AttributeSet attrs)

 

 

Parameters
context Context

 

attrs AttributeSet

 

Toolbar

added in API level 21

 

public Toolbar (Context context, AttributeSet attrs, int defStyleAttr)

 

 

Parameters
context Context

 

attrs AttributeSet

 

defStyleAttr int

 

Toolbar

added in API level 21

 

public Toolbar (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

 

 

Parameters
context Context

 

attrs AttributeSet

 

defStyleAttr int

 

defStyleRes int

 

Public methods

collapseActionView

added in API level 21

 

public void collapseActionView ()

Collapse a currently expanded action view. If this Toolbar does not have an expanded action view this method has no effect.

An action view may be expanded either directly from the MenuItem it belongs to or by user action.

 

 

See also:

dismissPopupMenus

added in API level 21

 

public void dismissPopupMenus ()

Dismiss all currently showing popup menus, including overflow or submenus.

 

generateLayoutParams

added in API level 21

 

public Toolbar.LayoutParams generateLayoutParams (AttributeSet attrs)

Returns a new set of layout parameters based on the supplied attributes set.

 

Parameters
attrs AttributeSet: the attributes to build the layout parameters from

 

Returns
Toolbar.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

 

getContentInsetEnd

added in