View


public class View
extends Object implements AccessibilityEventSource, Drawable.Callback, KeyEvent.Callback

java.lang.Object
   ↳ android.view.View


This class represents the basic building block for user interface components. A View occupies a rectangular area on the screen and is responsible for drawing and event handling. View is the base class for widgets, which are used to create interactive UI components (buttons, text fields, etc.). The ViewGroup subclass is the base class for layouts, which are invisible containers that hold other Views (or other ViewGroups) and define their layout properties.

Developer Guides

For information about using this class to develop your application's user interface, read the User Interface developer guide.

Using Views

All of the views in a window are arranged in a single tree. You can add views either from code or by specifying a tree of views in one or more XML layout files. There are many specialized subclasses of views that act as controls or are capable of displaying text, images, or other content.

Once you have created a tree of views, there are typically a few types of common operations you may wish to perform:

  • Set properties: for example setting the text of a TextView. The available properties and the methods that set them will vary among the different subclasses of views. Note that properties that are known at build time can be set in the XML layout files.
  • Set focus: The framework will handle moving focus in response to user input. To force focus to a specific view, call requestFocus().
  • Set up listeners: Views allow clients to set listeners that will be notified when something interesting happens to the view. For example, all views will let you set a listener to be notified when the view gains or loses focus. You can register such a listener using setOnFocusChangeListener(android.view.View.OnFocusChangeListener). Other view subclasses offer more specialized listeners. For example, a Button exposes a listener to notify clients when the button is clicked.
  • Set visibility: You can hide or show views using setVisibility(int).

Note: The Android framework is responsible for measuring, laying out and drawing views. You should not call methods that perform these actions on views yourself unless you are actually implementing a ViewGroup.

Implementing a Custom View

To implement a custom view, you will usually begin by providing overrides for some of the standard methods that the framework calls on all views. You do not need to override all of these methods. In fact, you can start by just overriding onDraw(android.graphics.Canvas).

Category Methods Description
Creation Constructors There is a form of the constructor that are called when the view is created from code and a form that is called when the view is inflated from a layout file. The second form should parse and apply any attributes defined in the layout file.
onFinishInflate() Called after a view and all of its children has been inflated from XML.
Layout onMeasure(int, int) Called to determine the size requirements for this view and all of its children.
onLayout(boolean, int, int, int, int) Called when this view should assign a size and position to all of its children.
onSizeChanged(int, int, int, int) Called when the size of this view has changed.
Drawing onDraw(android.graphics.Canvas) Called when the view should render its content.
Event processing onKeyDown(int, android.view.KeyEvent) Called when a new hardware key event occurs.
onKeyUp(int, android.view.KeyEvent) Called when a hardware key up event occurs.
onTrackballEvent(android.view.MotionEvent) Called when a trackball motion event occurs.
onTouchEvent(android.view.MotionEvent) Called when a motion event occurs with pointers down on the view.
onGenericMotionEvent(android.view.MotionEvent) Called when a generic motion event occurs.
onHoverEvent(android.view.MotionEvent) Called when a hover motion event occurs.
Focus onFocusChanged(boolean, int, android.graphics.Rect) Called when the view gains or loses focus.
onWindowFocusChanged(boolean) Called when the window containing the view gains or loses focus.
Attaching onAttachedToWindow() Called when the view is attached to a window.
onDetachedFromWindow() Called when the view is detached from its window.
onWindowVisibilityChanged(int) Called when the visibility of the window containing the view has changed.

IDs

Views may have an integer id associated with them. These ids are typically assigned in the layout XML files, and are used to find specific views within the view tree. A common pattern is to:
  • Define a Button in the layout file and assign it a unique ID.
     <Button
         android:id="@+id/my_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/my_button_text"/>
     
  • From the onCreate method of an Activity, find the Button
          Button myButton = findViewById(R.id.my_button);
     

View IDs need not be unique throughout the tree, but it is good practice to ensure that they are at least unique within the part of the tree you are searching.

Position

The geometry of a view is that of a rectangle. A view has a location, expressed as a pair of left and top coordinates, and two dimensions, expressed as a width and a height. The unit for location and dimensions is the pixel.

It is possible to retrieve the location of a view by invoking the methods getLeft() and getTop(). The former returns the left, or X, coordinate of the rectangle representing the view. The latter returns the top, or Y, coordinate of the rectangle representing the view. These methods both return the location of the view relative to its parent. For instance, when getLeft() returns 20, that means the view is located 20 pixels to the right of the left edge of its direct parent.

In addition, several convenience methods are offered to avoid unnecessary computations, namely getRight() and getBottom(). These methods return the coordinates of the right and bottom edges of the rectangle representing the view. For instance, calling getRight() is similar to the following computation: getLeft() + getWidth() (see Size for more information about the width.)

Size, padding and margins

The size of a view is expressed with a width and a height. A view actually possess two pairs of width and height values.

The first pair is known as measured width and measured height. These dimensions define how big a view wants to be within its parent (see Layout for more details.) The measured dimensions can be obtained by calling getMeasuredWidth() and getMeasuredHeight().

The second pair is simply known as width and height, or sometimes drawing width and drawing height. These dimensions define the actual size of the view on screen, at drawing time and after layout. These values may, but do not have to, be different from the measured width and height. The width and height can be obtained by calling getWidth() and getHeight().

To measure its dimensions, a view takes into account its padding. The padding is expressed in pixels for the left, top, right and bottom parts of the view. Padding can be used to offset the content of the view by a specific amount of pixels. For instance, a left padding of 2 will push the view's content by 2 pixels to the right of the left edge. Padding can be set using the setPadding(int, int, int, int) or setPaddingRelative(int, int, int, int) method and queried by calling getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom(), getPaddingStart(), getPaddingEnd().

Even though a view can define a padding, it does not provide any support for margins. However, view groups provide such a support. Refer to ViewGroup and ViewGroup.MarginLayoutParams for further information.

Layout

Layout is a two pass process: a measure pass and a layout pass. The measuring pass is implemented in measure(int, int) and is a top-down traversal of the view tree. Each view pushes dimension specifications down the tree during the recursion. At the end of the measure pass, every view has stored its measurements. The second pass happens in layout(int, int, int, int) and is also top-down. During this pass each parent is responsible for positioning all of its children using the sizes computed in the measure pass.

When a view's measure() method returns, its getMeasuredWidth() and getMeasuredHeight() values must be set, along with those for all of that view's descendants. A view's measured width and measured height values must respect the constraints imposed by the view's parents. This guarantees that at the end of the measure pass, all parents accept all of their children's measurements. A parent view may call measure() more than once on its children. For example, the parent may measure each child once with unspecified dimensions to find out how big they want to be, then call measure() on them again with actual numbers if the sum of all the children's unconstrained sizes is too big or too small.

The measure pass uses two classes to communicate dimensions. The MeasureSpec class is used by views to tell their parents how they want to be measured and positioned. The base LayoutParams class just describes how big the view wants to be for both width and height. For each dimension, it can specify one of:

  • an exact number
  • MATCH_PARENT, which means the view wants to be as big as its parent (minus padding)
  • WRAP_CONTENT, which means that the view wants to be just big enough to enclose its content (plus padding).
There are subclasses of LayoutParams for different subclasses of ViewGroup. For example, AbsoluteLayout has its own subclass of LayoutParams which adds an X and Y value.

MeasureSpecs are used to push requirements down the tree from parent to child. A MeasureSpec can be in one of three modes:

  • UNSPECIFIED: This is used by a parent to determine the desired dimension of a child view. For example, a LinearLayout may call measure() on its child with the height set to UNSPECIFIED and a width of EXACTLY 240 to find out how tall the child view wants to be given a width of 240 pixels.
  • EXACTLY: This is used by the parent to impose an exact size on the child. The child must use this size, and guarantee that all of its descendants will fit within this size.
  • AT_MOST: This is used by the parent to impose a maximum size on the child. The child must guarantee that it and all of its descendants will fit within this size.

To initiate a layout, call requestLayout(). This method is typically called by a view on itself when it believes that it can no longer fit within its current bounds.

Drawing

Drawing is handled by walking the tree and recording the drawing commands of any View that needs to update. After this, the drawing commands of the entire tree are issued to screen, clipped to the newly damaged area.

The tree is largely recorded and drawn in order, with parents drawn before (i.e., behind) their children, with siblings drawn in the order they appear in the tree. If you set a background drawable for a View, then the View will draw it before calling back to its onDraw() method. The child drawing order can be overridden with custom child drawing order in a ViewGroup, and with setZ(float) custom Z values} set on Views.

To force a view to draw, call invalidate().

Event Handling and Threading

The basic cycle of a view is as follows:

  1. An event comes in and is dispatched to the appropriate view. The view handles the event and notifies any listeners.
  2. If in the course of processing the event, the view's bounds may need to be changed, the view will call requestLayout().
  3. Similarly, if in the course of processing the event the view's appearance may need to be changed, the view will call invalidate().
  4. If either requestLayout() or invalidate() were called, the framework will take care of measuring, laying out, and drawing the tree as appropriate.

Note: The entire view tree is single threaded. You must always be on the UI thread when calling any method on any view. If you are doing work on other threads and want to update the state of a view from that thread, you should use a Handler.

Focus Handling

The framework will handle routine focus movement in response to user input. This includes changing the focus as views are removed or hidden, or as new views become available. Views indicate their willingness to take focus through the isFocusable() method. To change whether a view can take focus, call setFocusable(boolean). When in touch mode (see notes below) views indicate whether they still would like focus via isFocusableInTouchMode() and can change this via setFocusableInTouchMode(boolean).

Focus movement is based on an algorithm which finds the nearest neighbor in a given direction. In rare cases, the default algorithm may not match the intended behavior of the developer. In these situations, you can provide explicit overrides by using these XML attributes in the layout file:

 nextFocusDown
 nextFocusLeft
 nextFocusRight
 nextFocusUp
 

To get a particular view to take focus, call requestFocus().

Touch Mode

When a user is navigating a user interface via directional keys such as a D-pad, it is necessary to give focus to actionable items such as buttons so the user can see what will take input. If the device has touch capabilities, however, and the user begins interacting with the interface by touching it, it is no longer necessary to always highlight, or give focus to, a particular view. This motivates a mode for interaction named 'touch mode'.

For a touch capable device, once the user touches the screen, the device will enter touch mode. From this point onward, only views for which isFocusableInTouchMode() is true will be focusable, such as text editing widgets. Other views that are touchable, like buttons, will not take focus when touched; they will only fire the on click listeners.

Any time a user hits a directional key, such as a D-pad direction, the view device will exit touch mode, and find a view to take focus, so that the user may resume interacting with the user interface without touching the screen again.

The touch mode state is maintained across Activitys. Call isInTouchMode() to see whether the device is currently in touch mode.

Scrolling

The framework provides basic support for views that wish to internally scroll their content. This includes keeping track of the X and Y scroll offset as well as mechanisms for drawing scrollbars. See scrollBy(int, int), scrollTo(int, int), and awakenScrollBars() for more details.

Tags

Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.

Tags may be specified with character sequence values in layout XML as either a single tag using the android:tag attribute or multiple tags using the <tag> child element:

     <View ...
           android:tag="@string/mytag_value" />
     <View ...>
         <tag android:id="@+id/mytag"
              android:value="@string/mytag_value" />
     </View>
 

Tags may also be specified with arbitrary objects from code using setTag(java.lang.Object) or setTag(int, java.lang.Object).

Themes

By default, Views are created using the theme of the Context object supplied to their constructor; however, a different theme may be specified by using the android:theme attribute in layout XML or by passing a ContextThemeWrapper to the constructor from code.

When the android:theme attribute is used in XML, the specified theme is applied on top of the inflation context's theme (see LayoutInflater) and used for the view itself as well as any child elements.

In the following example, both views will be created using the Material dark color scheme; however, because an overlay theme is used which only defines a subset of attributes, the value of android:colorAccent defined on the inflation context's theme (e.g. the Activity theme) will be preserved.

     <LinearLayout
             ...
             android:theme="@android:theme/ThemeOverlay.Material.Dark">
         <View ...>
     </LinearLayout>
 

Properties

The View class exposes an ALPHA property, as well as several transform-related properties, such as TRANSLATION_X and TRANSLATION_Y. These properties are available both in the Property form as well as in similarly-named setter/getter methods (such as setAlpha(float) for ALPHA). These properties can be used to set persistent state associated with these rendering-related properties on the view. The properties and methods can also be used in conjunction with Animator-based animations, described more in the Animation section.

Animation

Starting with Android 3.0, the preferred way of animating views is to use the android.animation package APIs. These Animator-based classes change actual properties of the View object, such as alpha and translationX. This behavior is contrasted to that of the pre-3.0 Animation-based classes, which instead animate only how the view is drawn on the display. In particular, the ViewPropertyAnimator class makes animating these View properties particularly easy and efficient.

Alternatively, you can use the pre-3.0 animation classes to animate how Views are rendered. You can attach an Animation object to a view using setAnimation(android.view.animation.Animation) or startAnimation(android.view.animation.Animation). The animation can alter the scale, rotation, translation and alpha of a view over time. If the animation is attached to a view that has children, the animation will affect the entire subtree rooted by that node. When an animation is started, the framework will take care of redrawing the appropriate views until the animation completes.

Security

Sometimes it is essential that an application be able to verify that an action is being performed with the full knowledge and consent of the user, such as granting a permission request, making a purchase or clicking on an advertisement. Unfortunately, a malicious application could try to spoof the user into performing these actions, unaware, by concealing the intended purpose of the view. As a remedy, the framework offers a touch filtering mechanism that can be used to improve the security of views that provide access to sensitive functionality.

To enable touch filtering, call setFilterTouchesWhenObscured(boolean) or set the android:filterTouchesWhenObscured layout attribute to true. When enabled, the framework will discard touches that are received whenever the view's window is obscured by another visible window at the touched location. As a result, the view will not receive touches whenever the touch passed through a toast, dialog or other window that appears above the view's window.

For more fine-grained control over security, consider overriding the onFilterTouchEventForSecurity(android.view.MotionEvent) method to implement your own security policy. See also MotionEvent.FLAG_WINDOW_IS_OBSCURED.

See also:

Summary

Nested classes

class View.AccessibilityDelegate

This class represents a delegate that can be registered in a View to enhance accessibility support via composition rather via inheritance. 

class View.BaseSavedState

Base class for derived classes that want to save and restore their own state in View.onSaveInstanceState()

class View.DragShadowBuilder

Creates an image that the system displays during the drag and drop operation. 

class View.MeasureSpec

A MeasureSpec encapsulates the layout requirements passed from parent to child. 

interface View.OnApplyWindowInsetsListener

Listener for applying window insets on a view in a custom way. 

interface View.OnAttachStateChangeListener

Interface definition for a callback to be invoked when this view is attached or detached from its window. 

interface View.OnCapturedPointerListener

Interface definition for a callback to be invoked when a captured pointer event is being dispatched this view. 

interface View.OnClickListener

Interface definition for a callback to be invoked when a view is clicked. 

interface View.OnContextClickListener

Interface definition for a callback to be invoked when a view is context clicked. 

interface View.OnCreateContextMenuListener

Interface definition for a callback to be invoked when the context menu for this view is being built. 

interface View.OnDragListener

Interface definition for a listener that's invoked when a drag event is dispatched to this view. 

interface View.OnFocusChangeListener

Interface definition for a callback to be invoked when the focus state of a view changed. 

interface View.OnGenericMotionListener

Interface definition for a callback to be invoked when a generic motion event is dispatched to this view. 

interface View.OnHoverListener

Interface definition for a callback to be invoked when a hover event is dispatched to this view. 

interface View.OnKeyListener

Interface definition for a callback to be invoked when a hardware key event is dispatched to this view. 

interface View.OnLayoutChangeListener

Interface definition for a callback to be invoked when the layout bounds of a view changes due to layout processing. 

interface View.OnLongClickListener

Interface definition for a callback to be invoked when a view has been clicked and held. 

interface View.OnScrollChangeListener

Interface definition for a callback to be invoked when the scroll X or Y positions of a view change. 

interface View.OnSystemUiVisibilityChangeListener

This interface was deprecated in API level 30. Use WindowInsets.isVisible(int) to find out about system bar visibilities by setting a OnApplyWindowInsetsListener on this view. 

interface View.OnTouchListener

Interface definition for a callback to be invoked when a touch event is dispatched to this view. 

interface View.OnUnhandledKeyEventListener

Interface definition for a callback to be invoked when a hardware key event hasn't been handled by the view hierarchy. 

XML attributes

android:accessibilityHeading Whether or not this view is a heading for accessibility purposes. 
android:accessibilityLiveRegion Indicates to accessibility services whether the user should be notified when this view changes. 
android:accessibilityPaneTitle The title this view should present to accessibility as a pane title. 
android:accessibilityTraversalAfter Sets the id of a view that screen readers are requested to visit before this view. 
android:accessibilityTraversalBefore Sets the id of a view that screen readers are requested to visit after this view. 
android:allowClickWhenDisabled Whether or not allow clicks on disabled view. 
android:alpha alpha property of the view, as a value between 0 (completely transparent) and 1 (completely opaque). 
android:autoHandwritingEnabled

Whether or not the auto handwriting initiation is enabled in this View. 

android:autofillHints Describes the content of a view so that a autofill service can fill in the appropriate data. 
android:autofilledHighlight Drawable to be drawn over the view to mark it as autofilled

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

android:background A drawable to use as the background. 
android:backgroundTint Tint to apply to the background. 
android:backgroundTintMode Blending mode used to apply the background tint. 
android:clickable Defines whether this view reacts to click events. 
android:clipToOutline

Whether the View's Outline should be used to clip the contents of the View. 

android:contentDescription Defines text that briefly describes content of the view. 
android:contextClickable Defines whether this view reacts to context click events. 
android:defaultFocusHighlightEnabled Whether this View should use a default focus highlight when it gets focused but doesn't have R.attr.state_focused defined in its background. 
android:drawingCacheQuality Defines the quality of translucent drawing caches. 
android:duplicateParentState When this attribute is set to true, the view gets its drawable state (focused, pressed, etc.) from its direct parent rather than from itself. 
android:elevation base z depth of the view. 
android:fadeScrollbars Defines whether to fade out scrollbars when they are not in use. 
android:fadingEdgeLength Defines the length of the fading edges. 
android:filterTouchesWhenObscured Specifies whether to filter touches when the view's window is obscured by another visible window. 
android:fitsSystemWindows Boolean internal attribute to adjust view layout based on system windows such as the status bar. 
android:focusable Controls whether a view can take focus. 
android:focusableInTouchMode Boolean that controls whether a view can take focus while in touch mode. 
android:focusedByDefault Whether this view is a default-focus view. 
android:forceHasOverlappingRendering Whether this view has elements that may overlap when drawn. 
android:foreground Defines the drawable to draw over the content. 
android:foregroundGravity Defines the gravity to apply to the foreground drawable. 
android:foregroundTint Tint to apply to the foreground. 
android:foregroundTintMode Blending mode used to apply the foreground tint. 
android:hapticFeedbackEnabled Boolean that controls whether a view should have haptic feedback enabled for events such as long presses. 
android:id Supply an identifier name for this view, to later retrieve it with View.findViewById() or Activity.findViewById()
android:importantForAccessibility Describes whether or not this view is important for accessibility. 
android:importantForAutofill Hints the Android System whether the view node associated with this View should be included in a view structure used for autofill purposes. 
android:importantForContentCapture Hints the Android System whether the view node associated with this View should be use for content capture purposes. 
android:isCredential Boolean that hints the Android System that the view is credential and associated with CredentialManager

May be a boolean value, such as "true" or "false". 

android:isScrollContainer Set this if the view will serve as a scrolling container, meaning that it can be resized to shrink its overall window so that there will be space for an input method. 
android:keepScreenOn Controls whether the view's window should keep the screen on while visible. 
android:keyboardNavigationCluster Whether this view is a root of a keyboard navigation cluster. 
android:layerType Specifies the type of layer backing this view. 
android:layoutDirection Defines the direction of layout drawing. 
android:longClickable Defines whether this view reacts to long click events. 
android:minHeight Defines the minimum height of the view. 
android:minWidth Defines the minimum width of the view. 
android:nextClusterForward Defines the next keyboard navigation cluster. 
android:nextFocusDown Defines the next view to give focus to when the next focus is View.FOCUS_DOWN If the reference refers to a view that does not exist or is part of a hierarchy that is invisible, a RuntimeException will result when the reference is accessed. 
android:nextFocusForward Defines the next view to give focus to when the next focus is View.FOCUS_FORWARD If the reference refers to a view that does not exist or is part of a hierarchy that is invisible, a RuntimeException will result when the reference is accessed. 
android:nextFocusLeft Defines the next view to give focus to when the next focus is View.FOCUS_LEFT
android:nextFocusRight Defines the next view to give focus to when the next focus is View.FOCUS_RIGHT If the reference refers to a view that does not exist or is part of a hierarchy that is invisible, a RuntimeException will result when the reference is accessed. 
android:nextFocusUp Defines the next view to give focus to when the next focus is View.FOCUS_UP If the reference refers to a view that does not exist or is part of a hierarchy that is invisible, a RuntimeException will result when the reference is accessed. 
android:onClick Name of the method in this View's context to invoke when the view is clicked. 
android:outlineAmbientShadowColor Sets the color of the ambient shadow that is drawn when the view has a positive Z or elevation value. 
android:outlineSpotShadowColor Sets the color of the spot shadow that is drawn when the view has a positive Z or elevation value. 
android:padding Sets the padding, in pixels, of all four edges. 
android:paddingBottom Sets the padding, in pixels, of the bottom edge; see R.attr.padding
android:paddingEnd Sets the padding, in pixels, of the end edge; see R.attr.padding
android:paddingHorizontal Sets the padding, in pixels, of the left and right edges; see R.attr.padding
android:paddingLeft Sets the padding, in pixels, of the left edge; see R.attr.padding
android:paddingRight Sets the padding, in pixels, of the right edge; see R.attr.padding
android:paddingStart Sets the padding, in pixels, of the start edge; see R.attr.padding
android:paddingTop Sets the padding, in pixels, of the top edge; see R.attr.padding
android:paddingVertical Sets the padding, in pixels, of the top and bottom edges; see R.attr.padding
android:preferKeepClear

Sets a preference to keep the bounds of this view clear from floating windows above this view's window. 

android:requiresFadingEdge Defines which edges should be faded on scrolling. 
android:rotation rotation of the view, in degrees. 
android:rotationX rotation of the view around the x axis, in degrees. 
android:rotationY rotation of the view around the y axis, in degrees. 
android:saveEnabled If false, no state will be saved for this view when it is being frozen. 
android:scaleX scale of the view in the x direction. 
android:scaleY scale of the view in the y direction. 
android:screenReaderFocusable Whether this view should be treated as a focusable unit by screen reader accessibility tools. 
android:scrollIndicators Defines which scroll indicators should be displayed when the view can be scrolled. 
android:scrollX The initial horizontal scroll offset, in pixels. 
android:scrollY The initial vertical scroll offset, in pixels. 
android:scrollbarAlwaysDrawHorizontalTrack Defines whether the horizontal scrollbar track should always be drawn. 
android:scrollbarAlwaysDrawVerticalTrack Defines whether the vertical scrollbar track should always be drawn. 
android:scrollbarDefaultDelayBeforeFade Defines the delay in milliseconds that a scrollbar waits before fade out. 
android:scrollbarFadeDuration Defines the delay in milliseconds that a scrollbar takes to fade out. 
android:scrollbarSize Sets the width of vertical scrollbars and height of horizontal scrollbars. 
android:scrollbarStyle Controls the scrollbar style and position. 
android:scrollbarThumbHorizontal Defines the horizontal scrollbar thumb drawable. 
android:scrollbarThumbVertical Defines the vertical scrollbar thumb drawable. 
android:scrollbarTrackHorizontal Defines the horizontal scrollbar track drawable. 
android:scrollbarTrackVertical Defines the vertical scrollbar track drawable. 
android:scrollbars Defines which scrollbars should be displayed on scrolling or not. 
android:soundEffectsEnabled Boolean that controls whether a view should have sound effects enabled for events such as clicking and touching. 
android:stateListAnimator Sets the state-based animator for the View. 
android:supplementalDescription Provides brief supplemental information for the view, such as the purpose of the view when that purpose is not conveyed within its textual representation. 
android:tag Supply a tag for this view containing a String, to be retrieved later with View.getTag() or searched for with View.findViewWithTag()
android:textAlignment Defines the alignment of the text. 
android:textDirection Defines the direction of the text. 
android:theme Specifies a theme override for a view. 
android:tooltipText Defines text displayed in a small popup window on hover or long press. 
android:transformPivotX x location of the pivot point around which the view will rotate and scale. 
android:transformPivotY y location of the pivot point around which the view will rotate and scale. 
android:transitionName Names a View such that it can be identified for Transitions. 
android:translationX translation in x of the view. 
android:translationY translation in y of the view. 
android:translationZ translation in z of the view. 
android:visibility Controls the initial visibility of the view. 

Constants

int ACCESSIBILITY_DATA_SENSITIVE_AUTO

Automatically determine whether the view should only allow interactions from AccessibilityServices with the AccessibilityServiceInfo.isAccessibilityTool() property set to true.

int ACCESSIBILITY_DATA_SENSITIVE_NO

Allow interactions from all AccessibilityServices, regardless of their AccessibilityServiceInfo.isAccessibilityTool() property.

int ACCESSIBILITY_DATA_SENSITIVE_YES

Only allow interactions from AccessibilityServices with the AccessibilityServiceInfo.isAccessibilityTool() property set to true.

int ACCESSIBILITY_LIVE_REGION_ASSERTIVE

Live region mode specifying that accessibility services should immediately notify users of changes to this view.

int ACCESSIBILITY_LIVE_REGION_NONE

Live region mode specifying that accessibility services should not automatically announce changes to this view.

int ACCESSIBILITY_LIVE_REGION_POLITE

Live region mode specifying that accessibility services should notify users of changes to this view.

int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS

Flag requesting you to add views that are marked as not important for autofill (see setImportantForAutofill(int)) to a ViewStructure.

String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE

Hint indicating that this view can be autofilled with a credit card expiration date.

String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY

Hint indicating that this view can be autofilled with a credit card expiration day.

String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH

Hint indicating that this view can be autofilled with a credit card expiration month.

String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEAR

Hint indicating that this view can be autofilled with a credit card expiration year.

String AUTOFILL_HINT_CREDIT_CARD_NUMBER

Hint indicating that this view can be autofilled with a credit card number.

String AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE

Hint indicating that this view can be autofilled with a credit card security code.

String AUTOFILL_HINT_EMAIL_ADDRESS

Hint indicating that this view can be autofilled with an email address.

String AUTOFILL_HINT_NAME

Hint indicating that this view can be autofilled with a user's real name.

String AUTOFILL_HINT_PASSWORD

Hint indicating that this view can be autofilled with a password.

String AUTOFILL_HINT_PHONE

Hint indicating that this view can be autofilled with a phone number.

String AUTOFILL_HINT_POSTAL_ADDRESS

Hint indicating that this view can be autofilled with a postal address.

String AUTOFILL_HINT_POSTAL_CODE

Hint indicating that this view can be autofilled with a postal code.

String AUTOFILL_HINT_USERNAME

Hint indicating that this view can be autofilled with a username.

int AUTOFILL_TYPE_DATE

Autofill type for a field that contains a date, which is represented by a long representing the number of milliseconds since the standard base time known as "the epoch", namely January 1, 1970, 00:00:00 GMT (see Date.getTime().

int AUTOFILL_TYPE_LIST

Autofill type for a selection list field, which is filled by an int representing the element index inside the list (starting at 0).

int AUTOFILL_TYPE_NONE

Autofill type for views that cannot be autofilled.

int AUTOFILL_TYPE_TEXT

Autofill type for a text field, which is filled by a CharSequence.

int AUTOFILL_TYPE_TOGGLE

Autofill type for a togglable field, which is filled by a boolean.

int CONTENT_SENSITIVITY_AUTO

Content sensitivity is determined by the framework.

int CONTENT_SENSITIVITY_NOT_SENSITIVE

The view doesn't display sensitive content.

int CONTENT_SENSITIVITY_SENSITIVE

The view displays sensitive content.

int DRAG_FLAG_ACCESSIBILITY_ACTION

Flag indicating that the drag was initiated with AccessibilityNodeInfo.AccessibilityAction.ACTION_DRAG_START.

int DRAG_FLAG_GLOBAL

Flag indicating that a drag can cross window boundaries.

int DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION

When this flag is used with DRAG_FLAG_GLOBAL_URI_READ and/or DRAG_FLAG_GLOBAL_URI_WRITE, the URI permission grant can be persisted across device reboots until explicitly revoked with Context.revokeUriPermission(Uri, int) Context.revokeUriPermission}.

int DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION

When this flag is used with DRAG_FLAG_GLOBAL_URI_READ and/or DRAG_FLAG_GLOBAL_URI_WRITE, the URI permission grant applies to any URI that is a prefix match against the original granted URI.

int DRAG_FLAG_GLOBAL_SAME_APPLICATION

Flag indicating that a drag can cross window boundaries (within the same application).

int DRAG_FLAG_GLOBAL_URI_READ

When this flag is used with DRAG_FLAG_GLOBAL, the drag recipient will be able to request read access to the content URI(s) contained in the ClipData object.

int DRAG_FLAG_GLOBAL_URI_WRITE

When this flag is used with DRAG_FLAG_GLOBAL, the drag recipient will be able to request write access to the content URI(s) contained in the ClipData object.

int DRAG_FLAG_HIDE_CALLING_TASK_ON_DRAG_START

Flag indicating that this drag will result in the caller activity's task to be hidden for the duration of the drag, which means that the source activity will not receive drag events for the current drag gesture.

int DRAG_FLAG_OPAQUE

Flag indicating that the drag shadow will be opaque.

int DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG

Flag indicating that an unhandled drag should be delegated to the system to be started if no visible window wishes to handle the drop.

int DRAWING_CACHE_QUALITY_AUTO

This constant was deprecated in API level 28. The view drawing cache was largely made obsolete with the introduction of hardware-accelerated rendering in API 11. With hardware-acceleration, intermediate cache layers are largely unnecessary and can easily result in a net loss in performance due to the cost of creating and updating the layer. In the rare cases where caching layers are useful, such as for alpha animations, setLayerType(int, android.graphics.Paint) handles this with hardware rendering. For software-rendered snapshots of a small part of the View hierarchy or individual Views it is recommended to create a Canvas from either a Bitmap or Picture and call draw(android.graphics.Canvas) on the View. However these software-rendered usages are discouraged and have compatibility issues with hardware-only rendering features such as Config.HARDWARE bitmaps, real-time shadows, and outline clipping. For screenshots of the UI for feedback reports or unit testing the PixelCopy API is recommended.

int DRAWING_CACHE_QUALITY_HIGH

This constant was deprecated in API level 28. The view drawing cache was largely made obsolete with the introduction of hardware-accelerated rendering in API 11. With hardware-acceleration, intermediate cache layers are largely unnecessary and can easily result in a net loss in performance due to the cost of creating and updating the layer. In the rare cases where caching layers are useful, such as for alpha animations, setLayerType(int, android.graphics.Paint) handles this with hardware rendering. For software-rendered snapshots of a small part of the View hierarchy or individual Views it is recommended to create a Canvas from either a Bitmap or Picture and call draw(android.graphics.Canvas) on the View. However these software-rendered usages are discouraged and have compatibility issues with hardware-only rendering features such as Config.HARDWARE bitmaps, real-time shadows, and outline clipping. For screenshots of the UI for feedback reports or unit testing the PixelCopy API is recommended.

int DRAWING_CACHE_QUALITY_LOW

This constant was deprecated in API level 28. The view drawing cache was largely made obsolete with the introduction of hardware-accelerated rendering in API 11. With hardware-acceleration, intermediate cache layers are largely unnecessary and can easily result in a net loss in performance due to the cost of creating and updating the layer. In the rare cases where caching layers are useful, such as for alpha animations, setLayerType(int, android.graphics.Paint) handles this with hardware rendering. For software-rendered snapshots of a small part of the View hierarchy or individual Views it is recommended to create a Canvas from either a Bitmap or Picture and call draw(android.graphics.Canvas) on the View. However these software-rendered usages are discouraged and have compatibility issues with hardware-only rendering features such as Config.HARDWARE bitmaps, real-time shadows, and outline clipping. For screenshots of the UI for feedback reports or unit testing the PixelCopy API is recommended.

int FIND_VIEWS_WITH_CONTENT_DESCRIPTION

Find find views that contain the specified content description.

int FIND_VIEWS_WITH_TEXT

Find views that render the specified text.

int FOCUSABLE

This view wants keystrokes.

int FOCUSABLES_ALL

View flag indicating whether addFocusables(java.util.ArrayList, int, int) should add all focusable Views regardless if they are focusable in touch mode.

int FOCUSABLES_TOUCH_MODE

View flag indicating whether addFocusables(java.util.ArrayList, int, int) should add only Views focusable in touch mode.

int FOCUSABLE_AUTO

This view determines focusability automatically.

int FOCUS_BACKWARD

Use with focusSearch(int).

int FOCUS_DOWN

Use with focusSearch(int).

int FOCUS_FORWARD

Use with focusSearch(int).

int FOCUS_LEFT

Use with focusSearch(int).

int FOCUS_RIGHT

Use with focusSearch(int).

int FOCUS_UP

Use with focusSearch(int).

int GONE

This view is invisible, and it doesn't take any space for layout purposes.

int HAPTIC_FEEDBACK_ENABLED

View flag indicating whether this view should have haptic feedback enabled for events such as long presses.

int IMPORTANT_FOR_ACCESSIBILITY_AUTO

Automatically determine whether a view is important for accessibility.

int IMPORTANT_FOR_ACCESSIBILITY_NO

The view is not important for accessibility.

int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS

The view is not important for accessibility, nor are any of its descendant views.

int IMPORTANT_FOR_ACCESSIBILITY_YES

The view is important for accessibility.

int IMPORTANT_FOR_AUTOFILL_AUTO

Automatically determine whether a view is important for autofill.

int IMPORTANT_FOR_AUTOFILL_NO

The view is not important for autofill, but its children (if any) will be traversed.

int IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS

The view is not important for autofill, and its children (if any) will not be traversed.

int IMPORTANT_FOR_AUTOFILL_YES

The view is important for autofill, and its children (if any) will be traversed.

int IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS

The view is important for autofill, but its children (if any) will not be traversed.

int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO

Automatically determine whether a view is important for content capture.

int IMPORTANT_FOR_CONTENT_CAPTURE_NO

The view is not important for content capture, but its children (if any) will be traversed.

int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS

The view is not important for content capture, and its children (if any) will not be traversed.

int IMPORTANT_FOR_CONTENT_CAPTURE_YES

The view is important for content capture, and its children (if any) will be traversed.

int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS

The view is important for content capture, but its children (if any) will not be traversed.

int INVISIBLE

This view is invisible, but it still takes up space for layout purposes.

int KEEP_SCREEN_ON

View flag indicating that the screen should remain on while the window containing this view is visible to the user.

int LAYER_TYPE_HARDWARE

Indicates that the view has a hardware layer.

int LAYER_TYPE_NONE

Indicates that the view does not have a layer.

int LAYER_TYPE_SOFTWARE

Indicates that the view has a software layer.

int LAYOUT_DIRECTION_INHERIT

Horizontal layout direction of this view is inherited from its parent.

int LAYOUT_DIRECTION_LOCALE

Horizontal layout direction of this view is from deduced from the default language script for the locale.

int LAYOUT_DIRECTION_LTR

Horizontal layout direction of this view is from Left to Right.

int LAYOUT_DIRECTION_RTL

Horizontal layout direction of this view is from Right to Left.

int MEASURED_HEIGHT_STATE_SHIFT

Bit shift of MEASURED_STATE_MASK to get to the height bits for functions that combine both width and height into a single int, such as getMeasuredState() and the childState argument of resolveSizeAndState(int, int, int).

int MEASURED_SIZE_MASK

Bits of getMeasuredWidthAndState() and getMeasuredWidthAndState() that provide the actual measured size.

int MEASURED_STATE_MASK

Bits of getMeasuredWidthAndState() and getMeasuredWidthAndState() that provide the additional state bits.

int MEASURED_STATE_TOO_SMALL

Bit of getMeasuredWidthAndState() and getMeasuredWidthAndState() that indicates the measured size is smaller that the space the view would like to have.

int NOT_FOCUSABLE

This view does not want keystrokes.

int NO_ID

Used to mark a View that has no ID.

int OVER_SCROLL_ALWAYS

Always allow a user to over-scroll this view, provided it is a view that can scroll.

int OVER_SCROLL_IF_CONTENT_SCROLLS

Allow a user to over-scroll this view only if the content is large enough to meaningfully scroll, provided it is a view that can scroll.

int OVER_SCROLL_NEVER

Never allow a user to over-scroll this view.

int RECTANGLE_ON_SCREEN_REQUEST_SOURCE_INPUT_FOCUS

Represents that the user interaction that is requesting a rectangle on screen is doing so because the View has input/keyboard focus.

int RECTANGLE_ON_SCREEN_REQUEST_SOURCE_SCROLL_ONLY

Represents that the user interaction that is requesting a rectangle on screen is doing so only to scroll the View on screen, and the rectangle is not associated with a text cursor or keyboard focus.

int RECTANGLE_ON_SCREEN_REQUEST_SOURCE_TEXT_CURSOR

Represents that the user interaction that is requesting a rectangle on screen is doing so because the View contains a text cursor (caret).

int RECTANGLE_ON_SCREEN_REQUEST_SOURCE_UNDEFINED

Represents that the user interaction that is requesting a rectangle on screen is doing so via the original requestRectangleOnScreen(android.graphics.Rect) or requestRectangleOnScreen(android.graphics.Rect, boolean) APIs that do not define the source.

float REQUESTED_FRAME_RATE_CATEGORY_DEFAULT

float REQUESTED_FRAME_RATE_CATEGORY_HIGH

float REQUESTED_FRAME_RATE_CATEGORY_LOW

float REQUESTED_FRAME_RATE_CATEGORY_NORMAL

float REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE

int SCREEN_STATE_OFF

Indicates that the screen has changed state and is now off.

int SCREEN_STATE_ON

Indicates that the screen has changed state and is now on.

int SCROLLBARS_INSIDE_INSET

The scrollbar style to display the scrollbars inside the padded area, increasing the padding of the view.

int SCROLLBARS_INSIDE_OVERLAY

The scrollbar style to display the scrollbars inside the content area, without increasing the padding.

int SCROLLBARS_OUTSIDE_INSET

The scrollbar style to display the scrollbars at the edge of the view, increasing the padding of the view.

int SCROLLBARS_OUTSIDE_OVERLAY

The scrollbar style to display the scrollbars at the edge of the view, without increasing the padding.

int SCROLLBAR_POSITION_DEFAULT

Position the scroll bar at the default position as determined by the system.

int SCROLLBAR_POSITION_LEFT

Position the scroll bar along the left edge.

int SCROLLBAR_POSITION_RIGHT

Position the scroll bar along the right edge.

int SCROLL_AXIS_HORIZONTAL

Indicates scrolling along the horizontal axis.

int SCROLL_AXIS_NONE

Indicates no axis of view scrolling.

int SCROLL_AXIS_VERTICAL

Indicates scrolling along the vertical axis.

int SCROLL_CAPTURE_HINT_AUTO

The content of this view will be considered for scroll capture if scrolling is possible.

int SCROLL_CAPTURE_HINT_EXCLUDE

Explicitly exclude this view as a potential scroll capture target.

int SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS

Explicitly exclude all children of this view as potential scroll capture targets.

int SCROLL_CAPTURE_HINT_INCLUDE

Explicitly include this view as a potential scroll capture target.

int SCROLL_INDICATOR_BOTTOM

Scroll indicator direction for the bottom edge of the view.

int SCROLL_INDICATOR_END

Scroll indicator direction for the ending edge of the view.

int SCROLL_INDICATOR_LEFT

Scroll indicator direction for the left edge of the view.

int SCROLL_INDICATOR_RIGHT

Scroll indicator direction for the right edge of the view.

int SCROLL_INDICATOR_START

Scroll indicator direction for the starting edge of the view.

int SCROLL_INDICATOR_TOP

Scroll indicator direction for the top edge of the view.

int SOUND_EFFECTS_ENABLED

View flag indicating whether this view should have sound effects enabled for events such as clicking and touching.

int STATUS_BAR_HIDDEN

This constant was deprecated in API level 15. Use SYSTEM_UI_FLAG_LOW_PROFILE instead.

int STATUS_BAR_VISIBLE

This constant was deprecated in API level 15. Use SYSTEM_UI_FLAG_VISIBLE instead.

int SYSTEM_UI_FLAG_FULLSCREEN

This constant was deprecated in API level 30. Use WindowInsetsController.hide(int) with Type.statusBars() instead.

int SYSTEM_UI_FLAG_HIDE_NAVIGATION

This constant was deprecated in API level 30. Use WindowInsetsController.hide(int) with Type.navigationBars() instead.

int SYSTEM_UI_FLAG_IMMERSIVE

This constant was deprecated in API level 30. Use WindowInsetsController.BEHAVIOR_DEFAULT instead.

int SYSTEM_UI_FLAG_IMMERSIVE_STICKY

This constant was deprecated in API level 30. Use WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE instead.

int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

This constant was deprecated in API level 30. For floating windows, use LayoutParams.setFitInsetsTypes(int) with Type.statusBars() ()}. For non-floating windows that fill the screen, call Window.setDecorFitsSystemWindows(boolean) with false.

int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

This constant was deprecated in API level 30. For floating windows, use LayoutParams.setFitInsetsTypes(int) with Type.navigationBars(). For non-floating windows that fill the screen, call Window.setDecorFitsSystemWindows(boolean) with false.

int SYSTEM_UI_FLAG_LAYOUT_STABLE

This constant was deprecated in API level 30. Use WindowInsets.getInsetsIgnoringVisibility(int) instead to retrieve insets that don't change when system bars change visibility state.

int SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR

This constant was deprecated in API level 30. Use WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS instead.

int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

This constant was deprecated in API level 30. Use WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS instead.

int SYSTEM_UI_FLAG_LOW_PROFILE

This constant was deprecated in API level 30. Low profile mode is deprecated. Hide the system bars instead if the application needs to be in a unobtrusive mode. Use WindowInsetsController.hide(int) with Type.systemBars().

int SYSTEM_UI_FLAG_VISIBLE

This constant was deprecated in API level 30. SystemUiVisibility flags are deprecated. Use WindowInsetsController instead.

int SYSTEM_UI_LAYOUT_FLAGS

This constant was deprecated in API level 30. System UI layout flags are deprecated.

int TEXT_ALIGNMENT_CENTER

Center the paragraph, e.g. ALIGN_CENTER.

int TEXT_ALIGNMENT_GRAVITY

Default for the root view.

int TEXT_ALIGNMENT_INHERIT

Default text alignment.

int TEXT_ALIGNMENT_TEXT_END

Align to the end of the paragraph, e.g. ALIGN_OPPOSITE.

int