To create your own widget, extend View or a subclass. To
use your widget in layout XML, there are two additional files for you to
create. Here is a list of files you'll need to create to implement a custom
widget:
| AbsListView.MultiChoiceModeListener | A MultiChoiceModeListener receives events for CHOICE_MODE_MULTIPLE_MODAL.  | 
          
| AbsListView.OnScrollListener | Interface definition for a callback to be invoked when the list or grid has been scrolled. | 
| AbsListView.RecyclerListener | A RecyclerListener is used to receive a notification whenever a View is placed inside the RecycleBin's scrap heap. | 
| AbsListView.SelectionBoundsAdjuster | The top-level view of a list item can implement this interface to allow itself to modify the bounds of the selection shown for that item. | 
| Adapter | An Adapter object acts as a bridge between an AdapterView and the
 underlying data for that view.  | 
          
| AdapterView.OnItemClickListener | Interface definition for a callback to be invoked when an item in this AdapterView has been clicked. | 
| AdapterView.OnItemLongClickListener | Interface definition for a callback to be invoked when an item in this view has been clicked and held. | 
| AdapterView.OnItemSelectedListener | Interface definition for a callback to be invoked when an item in this view has been selected. | 
| Advanceable | This interface can be implemented by any collection-type view which has a notion of progressing through its set of children. | 
| AutoCompleteTextView.Validator | This interface is used to make sure that the text entered in this TextView complies to a certain format. | 
| CalendarView.OnDateChangeListener | The callback used to indicate the user changes the date. | 
| Checkable | Defines an extension for views that make them checkable. | 
| Chronometer.OnChronometerTickListener | A callback that notifies when the chronometer has incremented on its own. | 
| CompoundButton.OnCheckedChangeListener | Interface definition for a callback to be invoked when the checked state of a compound button changed. | 
| DatePicker.OnDateChangedListener | The callback used to indicate the user changes\d the date. | 
| ExpandableListAdapter | An adapter that links a ExpandableListView with the underlying
 data.  | 
          
| ExpandableListView.OnChildClickListener | Interface definition for a callback to be invoked when a child in this expandable list has been clicked. | 
| ExpandableListView.OnGroupClickListener | Interface definition for a callback to be invoked when a group in this expandable list has been clicked. | 
| ExpandableListView.OnGroupCollapseListener | Used for being notified when a group is collapsed | 
| ExpandableListView.OnGroupExpandListener | Used for being notified when a group is expanded | 
| Filter.FilterListener | Listener used to receive a notification upon completion of a filtering operation.  | 
          
| Filterable | Defines a filterable behavior.  | 
          
| FilterQueryProvider | This class can be used by external clients of CursorAdapter and CursorTreeAdapter to define how the content of the adapter should be filtered. | 
| HeterogeneousExpandableList | Additional methods that when implemented make an
 ExpandableListAdapter take advantage of the Adapter view type
 mechanism.  | 
          
| ListAdapter | Extended Adapter that is the bridge between a ListView
 and the data that backs the list.  | 
          
| MediaController.MediaPlayerControl | |
| MultiAutoCompleteTextView.Tokenizer | |
| NumberPicker.Formatter | Interface used to format current value into a string for presentation. | 
| NumberPicker.OnScrollListener | Interface to listen for the picker scroll state. | 
| NumberPicker.OnValueChangeListener | Interface to listen for changes of the current value. | 
| PopupMenu.OnDismissListener | Callback interface used to notify the application that the menu has closed. | 
| PopupMenu.OnMenuItemClickListener | Interface responsible for receiving menu item click events if the items themselves do not have individual item click listeners. | 
| PopupWindow.OnDismissListener | Listener that is called when this popup window is dismissed. | 
| RadioGroup.OnCheckedChangeListener | Interface definition for a callback to be invoked when the checked radio button changed in this group.  | 
          
| RatingBar.OnRatingBarChangeListener | A callback that notifies clients when the rating has been changed. | 
| RemoteViewsService.RemoteViewsFactory | An interface for an adapter between a remote collection view (ListView, GridView, etc) and the underlying data for that view. | 
| SearchView.OnCloseListener | |
| SearchView.OnQueryTextListener | Callbacks for changes to the query text. | 
| SearchView.OnSuggestionListener | Callback interface for selection events on suggestions. | 
| SectionIndexer | Interface that should be implemented on Adapters to enable fast scrolling 
 in an AbsListView between sections of the list.  | 
          
| SeekBar.OnSeekBarChangeListener | A callback that notifies clients when the progress level has been changed. | 
| ShareActionProvider.OnShareTargetSelectedListener | Listener for the event of selecting a share target. | 
| SimpleAdapter.ViewBinder | This class can be used by external clients of SimpleAdapter to bind values to views. | 
| SimpleCursorAdapter.CursorToStringConverter | This class can be used by external clients of SimpleCursorAdapter to define how the Cursor should be converted to a String. | 
| SimpleCursorAdapter.ViewBinder | This class can be used by external clients of SimpleCursorAdapter to bind values fom the Cursor to views. | 
| SimpleCursorTreeAdapter.ViewBinder | This class can be used by external clients of SimpleCursorTreeAdapter to bind values from the Cursor to views. | 
| SlidingDrawer.OnDrawerCloseListener | Callback invoked when the drawer is closed. | 
| SlidingDrawer.OnDrawerOpenListener | Callback invoked when the drawer is opened. | 
| SlidingDrawer.OnDrawerScrollListener | Callback invoked when the drawer is scrolled. | 
| SpinnerAdapter | Extended Adapter that is the bridge between a
 Spinner and its data.  | 
          
| TabHost.OnTabChangeListener | Interface definition for a callback to be invoked when tab changed | 
| TabHost.TabContentFactory | Makes the content of a tab when it is selected. | 
| TextView.OnEditorActionListener | Interface definition for a callback to be invoked when an action is performed on the editor. | 
| TimePicker.OnTimeChangedListener | The callback interface used to indicate the time has been adjusted. | 
| ViewSwitcher.ViewFactory | Creates views in a ViewSwitcher. | 
| WrapperListAdapter | List adapter that wraps another list adapter. | 
| ZoomButtonsController.OnZoomListener | Interface that will be called when the user performs an interaction that triggers some action, for example zooming. | 
| AbsListView | Base class that can be used to implement virtualized lists of items. | 
| AbsListView.LayoutParams | AbsListView extends LayoutParams to provide a place to hold the view type. | 
| AbsoluteLayout | 
      
  This class is deprecated.
      Use FrameLayout, RelativeLayout
             or a custom layout instead.
  | 
          
| AbsoluteLayout.LayoutParams | Per-child layout information associated with AbsoluteLayout. | 
| AbsSeekBar | |
| AbsSpinner | An abstract base class for spinner widgets. | 
| AdapterView<T extends Adapter> | An AdapterView is a view whose children are determined by an Adapter.  | 
          
| AdapterView.AdapterContextMenuInfo | Extra menu information provided to the
 onCreateContextMenu(ContextMenu, View, ContextMenuInfo)
 callback when a context menu is brought up for this AdapterView.  | 
          
| AdapterViewAnimator | Base class for a AdapterView that will perform animations
 when switching between its views.  | 
          
| AdapterViewFlipper | Simple ViewAnimator that will animate between two or more views
 that have been added to it.  | 
          
| AlphabetIndexer | A helper class for adapters that implement the SectionIndexer interface. | 
| AnalogClock | This widget display an analogic clock with two hands for hours and minutes. | 
| ArrayAdapter<T> | A concrete BaseAdapter that is backed by an array of arbitrary objects. | 
| AutoCompleteTextView | An editable text view that shows completion suggestions automatically while the user is typing.  | 
          
| BaseAdapter | Common base class of common implementation for an Adapter that can be
 used in both ListView (by implementing the specialized
 ListAdapter interface} and Spinner (by implementing the
 specialized SpinnerAdapter interface.  | 
          
| BaseExpandableListAdapter | Base class for a ExpandableListAdapter used to provide data and Views
 from some data to an expandable list view.  | 
          
| Button | Represents a push-button widget. | 
| CalendarView | This class is a calendar widget for displaying and selecting dates. | 
| CheckBox | A checkbox is a specific type of two-states button that can be either checked or unchecked.  | 
          
| CheckedTextView | An extension to TextView that supports the Checkable interface.  | 
          
| Chronometer | Class that implements a simple timer. | 
| CompoundButton | A button with two states, checked and unchecked.  | 
          
| CursorAdapter | Adapter that exposes data from a Cursor to a 
 ListView widget.  | 
          
| CursorTreeAdapter | An adapter that exposes data from a series of Cursors to an
 ExpandableListView widget.  | 
          
| DatePicker | This class is a widget for selecting a date. | 
| DialerFilter | |
| DigitalClock | Like AnalogClock, but digital. | 
| EdgeEffect | This class performs the graphical effect used at the edges of scrollable widgets when the user scrolls beyond the content bounds in 2D space. | 
| EditText | EditText is a thin veneer over TextView that configures itself to be editable. | 
| ExpandableListView | A view that shows items in a vertically scrolling two-level list. | 
| ExpandableListView.ExpandableListContextMenuInfo | Extra menu information specific to an ExpandableListView provided
 to the
 onCreateContextMenu(ContextMenu, View, ContextMenuInfo)
 callback when a context menu is brought up for this AdapterView.  | 
          
| Filter | A filter constrains data with a filtering pattern.  | 
          
| Filter.FilterResults | Holds the results of a filtering operation.  | 
          
| FrameLayout | FrameLayout is designed to block out an area on the screen to display a single item. | 
| FrameLayout.LayoutParams | Per-child layout information for layouts that support margins. | 
| Gallery | 
      
  This class is deprecated.
      This widget is no longer supported. Other horizontally scrolling
 widgets include HorizontalScrollView and ViewPager
 from the support library.
  | 
          
| Gallery.LayoutParams | Gallery extends LayoutParams to provide a place to hold current Transformation information along with previous position/transformation info. | 
| GridLayout | A layout that places its children in a rectangular grid. | 
| GridLayout.Alignment | Alignments specify where a view should be placed within a cell group and what size it should be. | 
| GridLayout.LayoutParams | Layout information associated with each of the children of a GridLayout. | 
| GridLayout.Spec | A Spec defines the horizontal or vertical characteristics of a group of cells. | 
| GridView | A view that shows items in two-dimensional scrolling grid. | 
| HeaderViewListAdapter | ListAdapter used when a ListView has header views. | 
| HorizontalScrollView | Layout container for a view hierarchy that can be scrolled by the user, allowing it to be larger than the physical display. | 
| ImageButton | Displays a button with an image (instead of text) that can be pressed or clicked by the user.  | 
          
| ImageSwitcher | |
| ImageView | Displays an arbitrary image, such as an icon. | 
| LinearLayout | A Layout that arranges its children in a single column or a single row. | 
| LinearLayout.LayoutParams | Per-child layout information associated with ViewLinearLayout. | 
| ListPopupWindow | A ListPopupWindow anchors itself to a host view and displays a list of choices. | 
| ListView | A view that shows items in a vertically scrolling list. | 
| ListView.FixedViewInfo | A class that represents a fixed view in a list, for example a header at the top or a footer at the bottom. | 
| MediaController | A view containing controls for a MediaPlayer. | 
| MultiAutoCompleteTextView | An editable text view, extending AutoCompleteTextView, that
 can show completion suggestions for the substring of the text where
 the user is typing instead of necessarily for the entire thing.  | 
          
| MultiAutoCompleteTextView.CommaTokenizer | This simple Tokenizer can be used for lists where the items are separated by a comma and one or more spaces. | 
| NumberPicker | A widget that enables the user to select a number form a predefined range. | 
| OverScroller | This class encapsulates scrolling with the ability to overshoot the bounds of a scrolling operation. | 
| PopupMenu | A PopupMenu displays a Menu in a modal popup window anchored to a View.  | 
          
| PopupWindow | A popup window that can be used to display an arbitrary view.  | 
          
| ProgressBar | Visual indicator of progress in some operation.  | 
          
| QuickContactBadge | Widget used to show an image with the standard QuickContact badge and on-click behavior. | 
| RadioButton | A radio button is a two-states button that can be either checked or unchecked.  | 
          
| RadioGroup | This class is used to create a multiple-exclusion scope for a set of radio buttons.  | 
          
| RadioGroup.LayoutParams | This set of layout parameters defaults the width and the height of
 the children to   | 
          
| RatingBar | A RatingBar is an extension of SeekBar and ProgressBar that shows a rating in stars. | 
| RelativeLayout | A Layout where the positions of the children can be described in relation to each other or to the parent. | 
| RelativeLayout.LayoutParams | Per-child layout information associated with RelativeLayout. | 
| RemoteViews | A class that describes a view hierarchy that can be displayed in another process. | 
| RemoteViewsService | The service to be connected to for a remote adapter to request RemoteViews. | 
| ResourceCursorAdapter | An easy adapter that creates views defined in an XML file. | 
| ResourceCursorTreeAdapter | A fairly simple ExpandableListAdapter that creates views defined in an XML file. | 
| Scroller | This class encapsulates scrolling. | 
| ScrollView | Layout container for a view hierarchy that can be scrolled by the user, allowing it to be larger than the physical display. | 
| SearchView | A widget that provides a user interface for the user to enter a search query and submit a request to a search provider. | 
| SeekBar | A SeekBar is an extension of ProgressBar that adds a draggable thumb. | 
| ShareActionProvider | This is a provider for a share action. | 
| SimpleAdapter | An easy adapter to map static data to views defined in an XML file. | 
| SimpleCursorAdapter | An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. | 
| SimpleCursorTreeAdapter | An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. | 
| SimpleExpandableListAdapter | An easy adapter to map static data to group and child views defined in an XML file. | 
| SlidingDrawer | SlidingDrawer hides content out of the screen and allows the user to drag a handle to bring the content on screen. | 
| Space | Space is a lightweight View subclass that may be used to create gaps between components in general purpose layouts. | 
| Spinner | A view that displays one child at a time and lets the user pick among them. | 
| StackView | |
| Switch | A Switch is a two-state toggle switch widget that can select between two options. | 
| TabHost | Container for a tabbed window view. | 
| TabHost.TabSpec | A tab has a tab indicator, content, and a tag that is used to keep track of it. | 
| TableLayout | A layout that arranges its children into rows and columns.  | 
          
| TableLayout.LayoutParams | This set of layout parameters enforces the width of each child to be
   | 
          
| TableRow | A layout that arranges its children horizontally.  | 
          
| TableRow.LayoutParams | Set of layout parameters used in table rows.  | 
          
| TabWidget | Displays a list of tab labels representing each page in the parent's tab collection. | 
| TextSwitcher | Specialized ViewSwitcher that contains
 only children of type TextView.  | 
          
| TextView | Displays text to the user and optionally allows them to edit it. | 
| TextView.SavedState | User interface state that is stored by TextView for implementing
 onSaveInstanceState().  | 
          
| TimePicker | A view for selecting the time of day, in either 24 hour or AM/PM mode. | 
| Toast | A toast is a view containing a quick little message for the user. The toast class helps you create and show those. | 
| ToggleButton | Displays checked/unchecked states as a button with a "light" indicator and by default accompanied with the text "ON" or "OFF". | 
| TwoLineListItem | A view group with two children, intended for use in ListViews.  | 
          
| VideoView | Displays a video file. | 
| ViewAnimator | Base class for a FrameLayout container that will perform animations
 when switching between its views.  | 
          
| ViewFlipper | Simple ViewAnimator that will animate between two or more views
 that have been added to it.  | 
          
| ViewSwitcher | ViewAnimator that switches between two views, and has a factory
 from which these views are created.  | 
          
| ZoomButton | |
| ZoomButtonsController | The ZoomButtonsController handles showing and hiding the zoom
 controls and positioning it relative to an owner view.  | 
          
| ZoomControls | The ZoomControls class displays a simple set of controls used for zooming and
 provides callbacks to register for events.  | 
          
| ImageView.ScaleType | Options for scaling the bounds of an image to the bounds of this view. | 
| TextView.BufferType | 
| RemoteViews.ActionException | Exception to send when something goes wrong executing an action |