> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/android/changelogs/version-7/v7-1-5.md).

# Version 7.1.5 Changelog (August 18, 2020)

World's #1 PDF SDK Library for Web, Mobile, Server, Desktop

Version: 7.1.5.75758

Release Date: August 18, 2020

## New features

* Intuitive UI design and advanced customization APIs with new beta viewer [PdfViewCtrlTabHostFragment2](/android/viewer/new-document-viewer-ui.md). Check out the [integration guide](/android/viewer/viewer/new-ui-integration.md), [customization guide](/android/viewer/new-ui-customization.md) and the [migration guide](/android/viewer/new-ui-migration.md)

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-c5790d629455a6a7c992a2b42e4492c47f0acd23%2F9c4ee5625625f1966fba3f0beff3082a68a7d16e-600x1067.gif?alt=media)

* Theme overhaul, `CustomAppTheme` is no longer required to be hard coded as-is in your application. All UI components are now mapped to specific attributes that you can define in your application. Then the theme will be passed into the viewer with [`ViewerBuilder.usingTheme`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ViewerBuilder.html#usingTheme\(int\)). It is also possible to continue what you are currently doing, see breaking change section for how to upgrade

## Breaking changes

* Theme has been reworked so you will no longer need to have a theme called `CustomAppTheme` in your application. `ViewerBuilder` now accepts a custom theme with `usingTheme` API. However, if you are currently overriding `CustomAppTheme` in your application, to upgrade to this version you will need to change the parent theme of your `CustomAppTheme` or custom theme to use `CustomAppThemeBase`. Otherwise you will need to define all the custom attributes described in the [theme guide](/android/ui-customization/custom-theme-a.md).

Typically, all you need to do is changing the parent theme of `CustomAppTheme` in your application to `CustomAppThemeBase`:

{% tabs %}
{% tab title="XML" %}
{% code lineNumbers="true" %}

```xml
<style name="CustomAppTheme" parent="CustomAppThemeBase"> <item name="colorPrimary">@color/app_color_primary_day</item> <item name="colorPrimaryDark">@color/app_color_primary_dark_day</item> <item name="colorAccent">@color/app_color_accent</item> </style>
```

{% endcode %}
{% endtab %}
{% endtabs %}

If you are experiencing issues with upgrading, please don't hesitate to [contact us](https://apryse.com/form/request).

## Fixed

* It is now possible to sign on signature widget created by another user in collaboration environment
* Fixed issue where signature dialog was showing up even when no signing permission was allowed
* Fixed placement issue with `CustomRelativeLayout` in double page view mode
* Fixed issue where `disableTools` API was not working properly for non-PDF documents
* Fixed issue where free text appearance was not applied properly when writing in the popup window
* Fixed issue where file attachment annotation appeared to be bigger than usual
* Fixed issue where password layout appears in wrong color in dark mode
* Fixed issue where stamp rotation handle was showing even when the annotation no-rotate flag is on
* Fixed potential crash when exit reflow mode

## APIs

### PDFViewCtrlTools package

#### StampFragmentAdapter

*new* method: `void onCustomStampSelected(String, Obj)`

*new* method: `void onRubberStampSelected(String, Obj)`

*new* method: `void setTheme(int)`

*removed* method: `void onCustomStampSelected(Obj)`

*removed* method: `void onRubberStampSelected(Obj)`

#### ToolManagerBuilder

*new* method: `Set<ToolMode> getDisabledToolModes(Context)`

#### ToolStyleConfig

*new* static field: `String KEY_PREF_PRESET_INDEX`

*new* method: `AnnotStyle getAnnotPresetStyle(Context, int, int, String)`

*new* method: `int getLastSelectedPresetIndex(Context, int, String)`

*new* method: `void setLastSelectedPresetIndex(Context, int, String, int)`

#### ViewerBuilder

*new* method: `Object usingTheme(int)`

*modified* class: `ViewerBuilder`

|       | Declaration                                                                                  |
| ----- | -------------------------------------------------------------------------------------------- |
| From: | public class ViewerBuilder extends SkeletalFragmentBuilder                                   |
| To:   | public class ViewerBuilder extends SkeletalFragmentBuilder implements ViewerBuilderInterface |

#### ViewerBuilder2

*new* class: `ViewerBuilder2`

#### ViewerBuilderInterface

*new* interface: `ViewerBuilderInterface<T>`

*new* method: `T usingCacheFolder(boolean)`

*new* method: `T usingConfig(ViewerConfig)`

*new* method: `T usingCustomHeaders(JSONObject)`

*new* method: `T usingCustomToolbar(int[])`

*new* method: `T usingFileType(int)`

*new* method: `T usingNavIcon(int)`

*new* method: `T usingQuitAppMode(boolean)`

*new* method: `T usingTabTitle(String)`

*new* method: `T usingTheme(int)`

#### ViewerConfig

*new* method: `String getInitialToolbarTag()`

*new* method: `List<AnnotationToolbarBuilder> getToolbarBuilders()`

*new* method: `String[] getToolbarsToHide()`

*new* method: `boolean isRememberLastToolbar()`

*new* method: `boolean isRememberLastUsedTool()`

*new* method: `boolean isShowBottomToolbar()`

*new* method: `boolean isShowToolbarSwitcher()`

#### ViewerConfig.Builder

*new* method: `Builder addToolbarBuilder(AnnotationToolbarBuilder)`

*new* method: `Builder hideToolbars(String[])`

*new* method: `Builder rememberLastUsedTool(boolean)`

*new* method: `Builder rememberLastUsedToolbar(boolean)`

*new* method: `Builder setInitialToolbarTag(String)`

*new* method: `Builder showBottomToolbar(boolean)`

*new* method: `Builder showToolbarSwitcher(boolean)`

#### AnnotStyleDialogFragment

*removed* method: `void dismiss(boolean)`

*removed* method: `void onConfigurationChanged(Configuration)`

*removed* method: `Dialog onCreateDialog(Bundle)`

*removed* method: `void onViewCreated(View, Bundle)`

*removed* method: `void setOnDismissListener(OnDismissListener)`

*removed* method: `void show(FragmentManager)`

*removed* method: `void show(FragmentManager, int, String)`

*modified* class: `AnnotStyleDialogFragment`

|       | Declaration                                                                                                                 |
| ----- | --------------------------------------------------------------------------------------------------------------------------- |
| From: | public class AnnotStyleDialogFragment extends DialogFragment implements OnPresetSelectedListener,AnnotStyleHolder           |
| To:   | public class AnnotStyleDialogFragment extends BaseBottomDialogFragment implements OnPresetSelectedListener,AnnotStyleHolder |

#### AnnotStyleDialogFragment.Builder

*new* method: `Builder setShowPreset(boolean)`

#### AnnotStyleView

*new* method: `void setShowPreset(boolean)`

#### BookmarksTabLayout

*new* method: `int getTabLayoutBackgroundDialog()`

*new* method: `int getTabLayoutBackgroundSheet()`

#### CustomFragmentTabLayout

*new* method: `void setOnTabModificationListener(OnTabModificationListener)`

#### OnTabModificationListener\<T

*new* interface: `OnTabModificationListener<T`

*new* method: `void onTabAdded(T)`

*new* method: `void onTabRemoved(T)`

#### CustomSizeDialogFragment

*new* method: `void onDismiss(DialogInterface)`

*new* method: `void setDialogDismissListener(DialogDismissListener)`

#### DialogDismissListener

*new* interface: `DialogDismissListener`

*new* method: `void onMenuEditorDialogDismiss()`

#### DocumentActivity

*new* static final field: `String EXTRA_NEW_UI`

*new* static final field: `String EXTRA_UI_THEME`

*new* static method: `void openDocument(Context, Uri, String, JSONObject, ViewerConfig, int, boolean)`

#### DocumentActivity.IntentBuilder

*new* class: `IntentBuilder`

*new* method: `Intent build()`

*new* static method: `IntentBuilder fromActivityClass(Context, Class<? extends DocumentActivity>)`

*new* method: `IntentBuilder usingConfig(ViewerConfig)`

*new* method: `IntentBuilder usingCustomHeaders(JSONObject)`

*new* method: `IntentBuilder usingNavIcon(int)`

*new* method: `IntentBuilder usingNewUi(boolean)`

*new* method: `IntentBuilder usingPassword(String)`

*new* method: `IntentBuilder usingTheme(int)`

*new* method: `IntentBuilder withFileRes(int)`

*new* method: `IntentBuilder withUri(Uri)`

*new* method: `IntentBuilder withUris(ArrayList<Uri>)`

#### DocumentView2

*new* class: `DocumentView2`

#### EditToolbar

*new* method: `void setOnEditToolbarChangeListener(OnEditToolbarChangedListener)`

*modified* class: `EditToolbar`

|       | Declaration                                                                      |
| ----- | -------------------------------------------------------------------------------- |
| From: | public class EditToolbar extends InsectHandlerToolbar                            |
| To:   | public class EditToolbar extends InsectHandlerToolbar implements BaseEditToolbar |

#### OnEditToolbarChangedListener

*new* interface: `OnEditToolbarChangedListener`

*new* method: `void onOrientationChanged()`

#### EditToolbarImpl

*new* constructor: `EditToolbarImpl(FragmentActivity, BaseEditToolbar, ToolManager, ToolMode, Annot, int, boolean, Bundle)`

*new* method: `boolean canRedo()`

*new* method: `boolean canUndo()`

*new* method: `ToolMode getToolMode()`

#### FindTextOverlay

*new* method: `void queryTextSubmit(String, int)`

#### MirrorSeekBar

*new* method: `boolean isVertical()`

*new* method: `void setOnSeekBarChangeListener(OnSeekBarChangeListener)`

*new* synchronized method: `void setProgress(int)`

*new* method: `void setVertical(boolean)`

#### PdfViewCtrlTabBaseFragment

*new* abstract class: `PdfViewCtrlTabBaseFragment`

#### PdfViewCtrlTabFragment

*modified* class: `PdfViewCtrlTabFragment`

|       | Declaration                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| From: | public class PdfViewCtrlTabFragment extends Fragment implements PageChangeListener,DocumentDownloadListener,UniversalDocumentConversionListener,DocumentLoadListener,RenderingListener,UniversalDocumentProgressIndicatorListener,PreToolManagerListener,QuickMenuListener,AnnotationModificationListener,PdfDocModificationListener,BasicAnnotationListener,OnGenericMotionEventListener,ToolChangedListener,AdvancedAnnotationListener,OnReflowTapListener,OnThumbnailSliderTrackingListener,OnUndoRedoListener,PortfolioDialogFragmentListener |
| To:   | public class PdfViewCtrlTabFragment extends PdfViewCtrlTabBaseFragment implements OnThumbnailSliderTrackingListener,OnUndoRedoListener                                                                                                                                                                                                                                                                                                                                                                                                            |

#### PdfViewCtrlTabFragment2

*new* class: `PdfViewCtrlTabFragment2`

#### PdfViewCtrlTabFragment2.TabListener

*new* interface: `TabListener`

#### PdfViewCtrlTabHostBaseFragment

*new* abstract class: `PdfViewCtrlTabHostBaseFragment`

#### PdfViewCtrlTabHostFragment

*modified* class: `PdfViewCtrlTabHostFragment`

|       | Declaration                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| From: | public class PdfViewCtrlTabHostFragment extends Fragment implements TabListener,AnnotationToolbarListener,QuickMenuListener,BaseOnTabSelectedListener,SearchResultsListener,ViewModePickerDialogFragmentListener,BookmarksDialogListener,BookmarksTabsListener,UserCropSelectionDialogFragmentListener,OnUserCropDialogDismissListener,AutoCropTaskListener,OnThumbnailsViewDialogDismissListener,OnThumbnailsEditAttemptWhileReadOnlyListener,OnExportThumbnailsListener,OnLayoutChangeListener,OnSystemUiVisibilityChangeListener |
| To:   | public class PdfViewCtrlTabHostFragment extends PdfViewCtrlTabHostBaseFragment implements TabListener,AnnotationToolbarListener                                                                                                                                                                                                                                                                                                                                                                                                     |

*modified* method: `PdfViewCtrlTabFragment getCurrentPdfViewCtrlFragment()`

|       | Declaration                                                       |
| ----- | ----------------------------------------------------------------- |
| From: | public PdfViewCtrlTabFragment getCurrentPdfViewCtrlFragment()     |
| To:   | public PdfViewCtrlTabBaseFragment getCurrentPdfViewCtrlFragment() |

#### PdfViewCtrlTabHostFragment2

*new* class: `PdfViewCtrlTabHostFragment2`

#### PdfViewCtrlTabHostFragment2.AppBarVisibilityListener

*new* interface: `AppBarVisibilityListener`

#### PdfViewCtrlTabHostFragment2.OnToolbarChangedListener

*new* interface: `OnToolbarChangedListener`

*new* method: `void onToolbarChanged(String)`

#### PdfViewCtrlTabHostFragment2.ReflowControlListener

*new* interface: `ReflowControlListener`

#### PdfViewCtrlTabHostFragment2.TabHostListener

*new* interface: `TabHostListener`

#### PresetColorGridView

*new* method: `void setShowAllColors(boolean)`

*new* method: `void setShowHighlightColors(boolean)`

#### ReflowControl

*new* static final field: `int FOLLOW_PDFVIEWCTRL`

#### CustomStampPickerFragment

*new* method: `void setTheme(int)`

#### BaseBottomDialogFragment

*new* abstract class: `BaseBottomDialogFragment`

*new* constructor: `BaseBottomDialogFragment()`

*new* method: `void dismiss()`

*new* method: `void dismiss(boolean)`

*new* method: `void onConfigurationChanged(Configuration)`

*new* method: `void onCreate(Bundle)`

*new* method: `Dialog onCreateDialog(Bundle)`

*new* method: `View onCreateView(LayoutInflater, ViewGroup, Bundle)`

*new* method: `void onSaveInstanceState(Bundle)`

*new* method: `void onViewCreated(View, Bundle)`

*new* method: `void onViewStateRestored(Bundle)`

*new* method: `void setOnDismissListener(OnDismissListener)`

*new* method: `void show(FragmentManager)`

*new* method: `void show(FragmentManager, int, String)`

#### DiffUtils

*new* static method: `void updateDiff(PdfViewCtrlTabFragment2, ArrayList<Uri>, int, int, int)`

*removed* static method: `void updateDiff(PdfViewCtrlTabFragment, ArrayList<Uri>, int, int, int)`

#### MenuCreatorAdapter

*new* class: `MenuCreatorAdapter`

*new* constructor: `MenuCreatorAdapter()`

*new* method: `void insert(MenuEditorItem, int)`

*new* method: `void notifyPinnedItemsChanged()`

*new* method: `void onBindViewHolder(ViewHolder, int)`

*new* method: `void onItemDrop(int, int)`

*new* method: `boolean onItemMove(int, int)`

*new* method: `void setOnDragListener(OnDragListener)`

*new* method: `void setOnItemActionListener(OnItemActionListener)`

#### OnItemActionListener

*new* interface: `OnItemActionListener`

*new* method: `void onItemDrop()`

*new* method: `void onItemMove(int)`

#### MenuCreatorDialogFragment

*new* class: `MenuCreatorDialogFragment`

*new* constructor: `MenuCreatorDialogFragment()`

*new* static final field: `String TAG`

*new* static method: `MenuCreatorDialogFragment newInstance()`

*new* method: `View onCreateView(LayoutInflater, ViewGroup, Bundle)`

*new* method: `boolean onDrag(View, DragEvent)`

*new* method: `void onItemDrop()`

*new* method: `void onItemMove(int)`

*new* method: `void onViewCreated(View, Bundle)`

#### MenuEditorAdapter

*new* method: `MenuEditorItem getItem(int)`

*new* method: `boolean isDragging()`

#### MenuEditorDialogFragment

*new* static method: `MenuEditorDialogFragment newInstance(String)`

#### MenuEditorViewModel

*new* method: `LiveData<ArrayList<MenuEditorItem>> getAllItemsLiveData()`

*new* method: `LiveData<ArrayList<MenuEditorItem>> getPinnedItemsLiveData()`

*new* method: `void setAllItems(ArrayList<MenuEditorItem>)`

*new* method: `void setPinnedItems(ArrayList<MenuEditorItem>)`

#### MenuEditorItemContent

*new* constructor: `MenuEditorItemContent(int, ToolbarButtonType, String, Drawable)`

*new* method: `ToolbarButtonType getToolbarButtonType()`

#### TextInputDialog

*new* static final field: `String BUNDLE_EXTRA`

*new* static method: `TextInputDialog newInstance(int, int, int, int, int, Bundle)`

#### TextInputResult

*new* constructor: `TextInputResult(int, String, Bundle)`

*new* method: `Bundle getExtra()`

#### TabSwitcherAdapter

*new* class: `TabSwitcherAdapter`

*new* constructor: `TabSwitcherAdapter()`

*new* method: `TabSwitcherItem getItem(int)`

*new* method: `int getItemCount()`

*new* method: `void onBindViewHolder(ViewHolder, int)`

*new* method: `ViewHolder onCreateViewHolder(ViewGroup, int)`

*new* method: `void setData(ArrayList<TabSwitcherItem>)`

*new* method: `void setSelectedTab(String)`

*new* method: `void setViewModel(TabSwitcherViewModel)`

#### TabSwitcherDialogFragment

*new* class: `TabSwitcherDialogFragment`

*new* constructor: `TabSwitcherDialogFragment()`

*new* static final field: `String TAG`

*new* static method: `TabSwitcherDialogFragment newInstance(String)`

*new* method: `void onCreate(Bundle)`

*new* method: `View onCreateView(LayoutInflater, ViewGroup, Bundle)`

*new* method: `void onViewCreated(View, Bundle)`

#### TabSwitcherEvent

*new* class: `TabSwitcherEvent`

*new* method: `Type getEventType()`

*new* method: `String getTabTag()`

#### TabSwitcherEvent.Type

*new* final class: `Type`

*new* static final field: `Type CLOSE_TAB`

*new* static final field: `Type SELECT_TAB`

*new* static method: `Type valueOf(String)`

*new* static method: `Type[] values()`

#### TabSwitcherViewModel

*new* class: `TabSwitcherViewModel`

*new* constructor: `TabSwitcherViewModel(Application)`

*new* method: `LiveData<ArrayList<TabSwitcherItem>> getItemsLiveData()`

*new* final method: `Observable<TabSwitcherEvent> getObservable()`

*new* method: `LiveData<String> getSelectedTag()`

*new* method: `void onCloseTab(String)`

*new* method: `void onSelectTab(String)`

*new* method: `void setItems(ArrayList<TabSwitcherItem>)`

*new* method: `void setSelectedTag(String)`

#### TabSwitcherItem

*new* class: `TabSwitcherItem`

*new* constructor: `TabSwitcherItem(String, String, String)`

*new* method: `String getPreviewPath()`

*new* method: `String getTabTag()`

*new* method: `String getTitle()`

#### ToolbarSwitcherViewModel

*new* class: `ToolbarSwitcherViewModel`

*new* constructor: `ToolbarSwitcherViewModel()`

*new* method: `ToolbarSwitcherState getState()`

*new* method: `void hideToolbar(String)`

*new* method: `void observeToolbarSwitcherState(LifecycleOwner, Observer<ToolbarSwitcherState>)`

*new* method: `void selectToolbar(String)`

*new* method: `void setState(ToolbarSwitcherState)`

*new* method: `void showToolbar(String)`

*new* method: `void updateCurrentToolbarWithMenuEditorItems(ArrayList<MenuEditorItem>)`

#### ToolbarSwitcherButton

*new* class: `ToolbarSwitcherButton`

*new* constructor: `ToolbarSwitcherButton(Context)`

*new* constructor: `ToolbarSwitcherButton(Context, AttributeSet)`

*new* constructor: `ToolbarSwitcherButton(Context, AttributeSet, int)`

*new* constructor: `ToolbarSwitcherButton(Context, AttributeSet, int, int)`

*new* method: `void hideSwitcherIcon()`

*new* method: `void setText(String)`

*new* method: `void showSwitcherIcon()`

#### ToolbarSwitcherButtonTheme

*new* class: `ToolbarSwitcherButtonTheme`

*new* constructor: `ToolbarSwitcherButtonTheme(int, int)`

*new* final field: `int iconColor`

*new* final field: `int textColor`

*new* static method: `ToolbarSwitcherButtonTheme fromContext(Context)`

#### ToolbarSwitcherDialog

*new* class: `ToolbarSwitcherDialog`

*new* constructor: `ToolbarSwitcherDialog()`

*new* static final field: `String TAG`

*new* method: `View onCreateView(LayoutInflater, ViewGroup, Bundle)`

#### ToolbarSwitcherDialog.Builder

*new* class: `Builder`

*new* constructor: `Builder()`

*new* static final field: `Creator<Builder> CREATOR`

*new* method: `Fragment build(Context)`

*new* method: `void checkArgs(Context)`

*new* method: `Bundle createBundle(Context)`

*new* method: `int describeContents()`

*new* method: `Builder setAnchor(Rect)`

*new* method: `Builder setAnchor(RectF)`

*new* method: `Builder setAnchorInScreen(Rect)`

*new* method: `Builder setAnchorView(View)`

*new* method: `void writeToParcel(Parcel, int)`

#### ToolbarSwitcherDialogTheme

*new* class: `ToolbarSwitcherDialogTheme`

*new* constructor: `ToolbarSwitcherDialogTheme(int, int, int, int)`

*new* final field: `int backgroundColor`

*new* final field: `int iconColor`

*new* final field: `int selectedItemBackgroundColor`

*new* final field: `int textColor`

*new* static method: `ToolbarSwitcherDialogTheme fromContext(Context)`

#### ToolbarSwitcherItem

*new* class: `ToolbarSwitcherItem`

*new* constructor: `ToolbarSwitcherItem(AnnotationToolbarBuilder)`

*new* final field: `AnnotationToolbarBuilder builder`

*new* field: `boolean isSelected`

*new* method: `int getIcon()`

*new* method: `String getTag()`

*new* method: `String getToolbarName()`

*new* method: `boolean isVisible()`

*new* method: `ToolbarSwitcherItem setSelected(boolean)`

*new* method: `ToolbarSwitcherItem setVisibility(boolean)`

*new* method: `void updateWithMenuEditorItems(ArrayList<MenuEditorItem>)`

#### ToolbarSwitcherState

*new* class: `ToolbarSwitcherState`

*new* constructor: `ToolbarSwitcherState(List<ToolbarSwitcherItem>)`

*new* method: `ToolbarSwitcherItem get(int)`

*new* method: `ToolbarSwitcherItem getSelectedToolbar()`

*new* method: `boolean hasMultipleToolbars()`

*new* method: `void selectToolbar(String)`

*new* method: `void setToolbarVisibility(String, boolean)`

*new* method: `int size()`

*new* method: `boolean updateToolbarSwitcherItem(ToolbarSwitcherItem)`

#### OnCustomStampSelectedListener

*new* method: `void onCustomStampSelected(String, Obj)`

*removed* method: `void onCustomStampSelected(Obj)`

#### OnRubberStampSelectedListener

*new* method: `void onRubberStampSelected(String, Obj)`

*removed* method: `void onRubberStampSelected(Obj)`

#### AnnotStyle

*new* static final field: `int CUSTOM_ANNOT_TYPE_CHECKBOX_FIELD`

*new* static final field: `int CUSTOM_ANNOT_TYPE_CHECKMARK_STAMP`

*new* static final field: `int CUSTOM_ANNOT_TYPE_COMBO_BOX`

*new* static final field: `int CUSTOM_ANNOT_TYPE_CROSS_STAMP`

*new* static final field: `int CUSTOM_ANNOT_TYPE_DOT_STAMP`

*new* static final field: `int CUSTOM_ANNOT_TYPE_IMAGE_STAMP`

*new* static final field: `int CUSTOM_ANNOT_TYPE_LASSO_MULTI_SELECT`

*new* static final field: `int CUSTOM_ANNOT_TYPE_LIST_BOX`

*new* static final field: `int CUSTOM_ANNOT_TYPE_PAN`

*new* static final field: `int CUSTOM_ANNOT_TYPE_RADIO_BUTTON`

*new* static final field: `int CUSTOM_ANNOT_TYPE_RECT_MULTI_SELECT`

*new* static final field: `int CUSTOM_ANNOT_TYPE_SIGNATURE_FIELD`

*new* static final field: `int CUSTOM_ANNOT_TYPE_TEXT_FIELD`

*new* static final field: `int CUSTOM_EDIT_TOOLBAR`

*new* static final field: `int CUSTOM_TOOL_REDO`

*new* static final field: `int CUSTOM_TOOL_UNDO`

*new* method: `void bindPreview(ActionButton)`

*new* method: `String getStampId()`

*new* method: `boolean hasStampId()`

*new* method: `boolean isRubberStamp()`

*new* method: `boolean isSignature()`

*new* method: `void setStampId(String)`

*removed* method: `void bindPreview(AnnotationPropertyPreviewView)`

*modified* method: `AnnotationPropertyPreviewView getBindedPreview()`

|       | Declaration                                             |
| ----- | ------------------------------------------------------- |
| From: | public AnnotationPropertyPreviewView getBindedPreview() |
| To:   | public ActionButton getBindedPreview()                  |

#### CustomStampOption

*new* static final field: `String KEY_INDEX`

*new* static method: `String getCustomStampBitmapPath(Context, int)`

*new* static method: `String getCustomStampsInfo(Context)`

#### FileInfo

*new* method: `void setFile(File)`

#### StandardStampOption

*new* static method: `String getStandardStampBitmapPath(Context, String)`

#### AnnotEditTextMarkup

*new* method: `void onClose()`

#### Pan

*new* method: `void enablePresetMode()`

#### RubberStampCreate

*new* static final field: `String sCHECK_MARK_LABEL`

*new* static final field: `String sCROSS_LABEL`

*new* static final field: `CustomStampPreviewAppearance[] sCustomStampPreviewAppearances`

*new* static final field: `String sDOT_LABEL`

*new* static final field: `StandardStampPreviewAppearance[] sStandardStampPreviewAppearance`

*new* method: `void setupAnnotProperty(AnnotStyle)`

*new* method: `void showRubberStampDialogFragment(OnRubberStampSelectedListener, OnDialogDismissListener)`

#### Signature

*new* method: `void handleAnnotStyleDialogFragmentDismissed(AnnotStyleDialogFragment)`

*new* method: `void onClose()`

*new* method: `void onCreate()`

*new* method: `void setSignatureFilePath(String)`

*new* method: `void setupAnnotProperty(AnnotStyle)`

*new* method: `void showSignaturePickerDialog(OnCreateSignatureListener, OnDialogDismissListener)`

#### Tool

*new* static final field: `int ANNOT_PERMISSION_FILL_AND_SIGN`

*new* method: `void backToDefaultTool()`

*new* method: `Bundle getBundle()`

#### ToolManager

*new* method: `void addToolCreatedListener(ToolChangedListener)`

*new* method: `void backToDefaultTool()`

*new* method: `Tool createTool(ToolModeBase, Tool, Bundle)`

*new* method: `Tool createTool(ToolModeBase, Tool, boolean)`

*new* method: `Set<ToolMode> getDisabledToolModes()`

*new* method: `PresetsListener getPresetsListener()`

*new* method: `StampDialogListener getStampDialogListener()`

*new* method: `int getTheme()`

*new* method: `void removeToolCreatedListener(ToolChangedListener)`

*new* method: `void setPresetsListener(PresetsListener)`

*new* method: `void setStampDialogListener(StampDialogListener)`

*new* method: `void setThemeProvider(ThemeProvider)`

#### PresetsListener

*new* interface: `PresetsListener`

*new* method: `void onUpdatePresets(int)`

#### StampDialogListener

*new* interface: `StampDialogListener`

*new* method: `void onSaveStampPreset(int, String)`

#### UndoRedoManager

*new* method: `void addUndoRedoStateChangeListener(UndoRedoStateChangeListener)`

*new* method: `void clearUndoRedoStateChangeListener()`

*new* method: `void notifyUndoRedoStateChange()`

*new* method: `void removeUndoRedoStateChangeListener(UndoRedoStateChangeListener)`

*new* method: `void setEditToolbarImpl(EditToolbarImpl)`

#### UndoRedoStateChangeListener

*new* interface: `UndoRedoStateChangeListener`

*new* method: `void onStateChanged()`

#### AnnotUtils

*new* static method: `Bitmap getStandardStampBitmapFromPdf(Context, String, int, int)`

*new* static method: `String getStandardStampImageFileFromName(Context, StandardStampPreviewAppearance, int)`

#### DialogGoToPage

*new* constructor: `DialogGoToPage(Context, PDFViewCtrl, DialogGoToPageListener)`

*removed* constructor: `DialogGoToPage(PdfViewCtrlTabFragment, Context, PDFViewCtrl, ReflowControl)`

#### DialogGoToPageListener

*new* interface: `DialogGoToPageListener`

*new* method: `void onPageSet(int)`

#### PdfViewCtrlSettingsManager

*new* static method: `String getAnnotStylePreset(Context, int, int, String)`

*new* static method: `void setAnnotStylePreset(Context, int, int, String, String)`

#### ReflowWebView

*new* method: `boolean isVertical()`

#### StampManager

*new* method: `void consumeDelayRemoveSignature(Context)`

*new* method: `void setDelayRemoveSignature(String)`

#### ThemeProvider

*new* class: `ThemeProvider`

*new* constructor: `ThemeProvider()`

*new* method: `int getTheme()`

*new* method: `void setTheme(int)`

#### ToolbarActionMode

*new* method: `void setMainToolbar(Toolbar)`

#### ViewerUtils

*new* static method: `String getImageSignaturePath(Activity, Intent, Uri)`

*new* static method: `void importAnnotationCommand(PDFViewCtrl, String)`

*new* static method: `boolean isContinuousPageMode(PDFViewCtrl)`

*new* static method: `boolean isInFullScreenMode(Context)`

*new* static method: `boolean isNonContinuousVerticalPageMode(PDFViewCtrl)`

*new* static method: `boolean isSinglePageMode(PDFViewCtrl)`

#### AppBarLayout

*new* field: `AppBarLayoutListener mListener`

*new* method: `void setAppBarLayoutListener(AppBarLayoutListener)`

#### AppBarLayoutListener

*new* interface: `AppBarLayoutListener`

*new* method: `void onVisibilityChanged(View, int)`

#### IgnoreTopInsetFrameLayout

*new* class: `IgnoreTopInsetFrameLayout`

*new* constructor: `IgnoreTopInsetFrameLayout(Context)`

*new* constructor: `IgnoreTopInsetFrameLayout(Context, AttributeSet)`

*new* constructor: `IgnoreTopInsetFrameLayout(Context, AttributeSet, int)`

*new* field: `IgnoreTopInsetFrameLayoutListener mListener`

*new* method: `WindowInsets dispatchApplyWindowInsets(WindowInsets)`

*new* method: `void setIgnoreTopInsetFrameLayoutListener(IgnoreTopInsetFrameLayoutListener)`

#### IgnoreTopInsetFrameLayoutListener

*new* interface: `IgnoreTopInsetFrameLayoutListener`

*new* method: `void onVisibilityChanged(View, int)`

#### IgnoreTopInsetRelativeLayout

*new* class: `IgnoreTopInsetRelativeLayout`

*new* constructor: `IgnoreTopInsetRelativeLayout(Context)`

*new* constructor: `IgnoreTopInsetRelativeLayout(Context, AttributeSet)`

*new* constructor: `IgnoreTopInsetRelativeLayout(Context, AttributeSet, int)`

*new* method: `WindowInsets dispatchApplyWindowInsets(WindowInsets)`

#### TopCropImageView

*new* class: `TopCropImageView`

*new* constructor: `TopCropImageView(Context)`

*new* constructor: `TopCropImageView(Context, AttributeSet)`

*new* constructor: `TopCropImageView(Context, AttributeSet, int)`

#### TouchAwareRecyclerView

*new* class: `TouchAwareRecyclerView`

*new* constructor: `TouchAwareRecyclerView(Context)`

*new* constructor: `TouchAwareRecyclerView(Context, AttributeSet)`

*new* constructor: `TouchAwareRecyclerView(Context, AttributeSet, int)`

*new* method: `float getTouchX()`

*new* method: `float getTouchY()`

*new* method: `boolean onTouchEvent(MotionEvent)`

#### BottomBarComponent

*new* class: `BottomBarComponent`

*new* constructor: `BottomBarComponent(Fragment, ViewGroup)`

*new* method: `void addOnMenuItemClickListener(OnMenuItemClickListener)`

*new* method: `boolean hasVisibleItems()`

*new* method: `void inflateWithBuilder(AnnotationToolbarBuilder)`

*new* method: `void setItemEnabled(boolean, int)`

*new* method: `void setItemSelected(boolean, int)`

*new* method: `void setItemVisibility(boolean, int)`

#### BottomBarView

*new* class: `BottomBarView`

*new* constructor: `BottomBarView(ViewGroup)`

*new* method: `void addOnMenuItemClickListener(OnMenuItemClickListener)`

*new* method: `boolean hasVisibleItems()`

*new* method: `void inflateWithBuilder(AnnotationToolbarBuilder)`

*new* method: `void setItemEnabled(int, boolean)`

*new* method: `void setItemSelected(int, boolean)`

*new* method: `void setItemVisibility(int, boolean)`

#### PresetBarComponent

*new* class: `PresetBarComponent`

*new* constructor: `PresetBarComponent(LifecycleOwner, FragmentManager, PresetBarViewModel, ToolManagerViewModel, ViewGroup)`

*new* constructor: `PresetBarComponent(LifecycleOwner, FragmentManager, PresetBarViewModel, ToolManagerViewModel, PresetBarView)`

#### PresetBarViewModel

*new* class: `PresetBarViewModel`

*new* constructor: `PresetBarViewModel(Application)`

*new* method: `void dismissStyleDialog()`

*new* method: `void generatePreview(int, String)`

*new* method: `PresetBarState getPresetBarState()`

*new* method: `void hidePresetBar()`

*new* method: `void observePresetState(LifecycleOwner, Observer<PresetBarState>)`

*new* method: `void observeSinglePresetImageFile(LifecycleOwner, Observer<SinglePresetState>)`

*new* method: `void openStyleDialog()`

*new* method: `void reloadPreset(Context, int)`

*new* method: `void reloadSignaturePreset(Context, int, String, int)`

*new* method: `void reloadStampPreset(Context, int, String, int)`

*new* method: `void saveStampPreset(Context, int, String, String, int)`

*new* method: `void saveStampPreset(int, String)`

*new* method: `void selectPreset(int)`

*new* method: `void setPresetBarState(PresetBarState)`

*new* method: `void showPresetBar()`

*new* method: `void updateAnnotStyle(AnnotStyle, int)`

#### PresetBarState

*new* class: `PresetBarState`

*new* static final field: `int PRESET_NORMAL`

*new* static final field: `int PRESET_SELECTED`

*new* static final field: `int PRESET_STYLE_DIALOG_DISMISSED`

*new* static final field: `int PRESET_STYLE_DIALOG_SHOWN`

*new* field: `boolean isSinglePreset`

*new* field: `boolean isVisible`

*new* field: `int styleDialogState`

*new* final field: `ToolbarItem toolbarItem`

*new* method: `void addPresetState(PresetButtonState)`

*new* method: `void dismissStyleDialog()`

*new* static method: `PresetBarState fromSavedState(Context, ToolbarItem)`

*new* method: `Pair<PresetButtonState, Integer> getActivePresetState()`

*new* method: `int getButtonId()`

*new* method: `int getNumberOfPresetStates()`

*new* method: `PresetButtonState getPresetState(int)`

*new* method: `int getToolbarButtonTypeId()`

*new* method: `String getToolbarStyleId()`

*new* method: `void hidePresetBar()`

*new* method: `boolean isPresetSelected(int)`

*new* method: `void openStyleDialog()`

*new* method: `void selectPreset(int)`

*new* method: `void showPresetBar()`

*new* method: `void updateAnnotStyle(AnnotStyle, int)`

#### PresetButtonState

*new* class: `PresetButtonState`

*new* constructor: `PresetButtonState()`

*new* method: `AnnotStyle getAnnotStyle()`

*new* method: `void initializeStyle(Context, int, int, String)`

*new* method: `boolean isSelected()`

*new* method: `void setAnnotStyle(AnnotStyle)`

*new* method: `void setSelected(boolean)`

#### SinglePresetState

*new* class: `SinglePresetState`

*new* constructor: `SinglePresetState()`

*new* static method: `SinglePresetState fromBitmap(Bitmap)`

*new* static method: `SinglePresetState fromEmptyState(int)`

*new* static method: `SinglePresetState fromImageFile(File)`

*new* method: `Bitmap getBitmap()`

*new* method: `int getEmptyStateDesc()`

*new* method: `File getImageFile()`

*new* method: `void setBitmap(Bitmap)`

*new* method: `void setEmptyState(int)`

*new* method: `void setImageFile(File)`

#### PresetActionButton

*new* class: `PresetActionButton`

*new* constructor: `PresetActionButton(Context)`

*new* constructor: `PresetActionButton(Context, AttributeSet)`

*new* constructor: `PresetActionButton(Context, AttributeSet, int)`

*new* constructor: `PresetActionButton(Context, AttributeSet, int, int)`

*new* method: `void deselect()`

*new* method: `void openStyle()`

*new* method: `void resetStyle()`

*new* method: `void select()`

*new* method: `void setIconColor(int)`

#### PresetBarView

*new* class: `PresetBarView`

*new* constructor: `PresetBarView(ViewGroup)`

*new* static final field: `int DEFAULT_NUMBER_OF_PRESETS`

*new* method: `void addOnCloseButtonClickListener(OnCloseButtonClickListener)`

*new* method: `void addOnPresetButtonClickListener(OnPresetViewButtonClickListener)`

*new* method: `void addOnStyleButtonClickListener(OnStyleButtonClickListener)`

*new* method: `Context getContext()`

*new* method: `View getParent()`

*new* method: `void hidePresetBar(boolean)`

*new* method: `void removeOnCloseButtonClickListener(OnCloseButtonClickListener)`

*new* method: `void removeOnPresetButtonClickListener(OnPresetViewButtonClickListener)`

*new* method: `void removeOnStyleButtonClickListener(OnStyleButtonClickListener)`

*new* method: `void setSinglePreset(boolean)`

*new* method: `void showPresetBar(boolean)`

*new* method: `void updatePresetState(PresetBarState)`

*new* method: `void updatePresetStyle(PresetBarState)`

*new* method: `void updateSinglePreset(SinglePresetState)`

#### OnCloseButtonClickListener

*new* interface: `OnCloseButtonClickListener`

*new* method: `void onCloseButtonClicked()`

#### OnPresetViewButtonClickListener

*new* interface: `OnPresetViewButtonClickListener`

*new* method: `void onPresetButtonClicked(int)`

#### OnStyleButtonClickListener

*new* interface: `OnStyleButtonClickListener`

*new* method: `void onStyleButtonClicked()`

#### PresetSingleButton

*new* class: `PresetSingleButton`

*new* constructor: `PresetSingleButton(Context)`

*new* constructor: `PresetSingleButton(Context, AttributeSet)`

*new* constructor: `PresetSingleButton(Context, AttributeSet, int)`

*new* constructor: `PresetSingleButton(Context, AttributeSet, int, int)`

*new* method: `void setEmptyState(int)`

*new* method: `void setIconColor(int)`

*new* method: `void setIconSize(int)`

*new* method: `void setPresetBitmap(Bitmap)`

*new* method: `void setPresetFile(File)`

#### TabletPresetBarView

*new* class: `TabletPresetBarView`

*new* constructor: `TabletPresetBarView(ViewGroup)`

*new* method: `void attachToNewParent(ViewGroup)`

#### DocumentSlider

*new* class: `DocumentSlider`

*new* constructor: `DocumentSlider(Context)`

*new* constructor: `DocumentSlider(Context, AttributeSet)`

*new* constructor: `DocumentSlider(Context, AttributeSet, int)`

*new* constructor: `DocumentSlider(Context, AttributeSet, int, int)`

*new* method: `void clearResources()`

*new* method: `void dismiss()`

*new* method: `void dismiss(boolean)`

*new* method: `void handleDocumentLoaded()`

*new* method: `boolean isProgressChanging()`

*new* method: `boolean isReversed()`

*new* method: `boolean isVertical()`

*new* method: `void onCanvasSizeChanged()`

*new* method: `void onDocumentLoaded()`

*new* method: `void onPageChange(int, int, PageChangeState)`

*new* method: `void refreshPageCount()`

*new* method: `void setOnDocumentSliderTrackingListener(OnDocumentSliderTrackingListener)`

*new* method: `void setPageIndicatorLayout(PageIndicatorLayout)`

*new* method: `void setPdfViewCtrl(PDFViewCtrl)`

*new* method: `void setProgress(int)`

*new* method: `void setReversed(boolean)`

*new* method: `void show()`

*new* method: `void show(boolean)`

*new* method: `void updateProgress()`

#### OnDocumentSliderTrackingListener

*new* interface: `OnDocumentSliderTrackingListener`

*new* method: `void onDocumentSliderStartTrackingTouch()`

*new* method: `void onDocumentSliderStopTrackingTouch(int)`

#### DocumentSliderChip

*new* class: `DocumentSliderChip`

*new* constructor: `DocumentSliderChip(Context)`

*new* constructor: `DocumentSliderChip(Context, AttributeSet)`

*new* constructor: `DocumentSliderChip(Context, AttributeSet, int)`

*new* method: `boolean onTouchEvent(MotionEvent)`

*new* method: `void setCardBackground(int)`

*new* method: `void setIconTint(int)`

*new* method: `void setVertical(boolean)`

#### ToolManagerViewModel

*new* class: `ToolManagerViewModel`

*new* constructor: `ToolManagerViewModel()`

*new* method: `Tool getTool()`

*new* method: `ToolManager getToolManager()`

*new* method: `void observeToolChanges(LifecycleOwner, Observer<ToolChange>)`

*new* method: `void observeToolManagerChanges(LifecycleOwner, Observer<ToolManager>)`

*new* method: `void setToolManager(ToolManager)`

#### ToolChange

*new* final class: `ToolChange`

*new* constructor: `ToolChange(Tool, Tool)`

*new* final field: `Tool newTool`

*new* final field: `Tool oldTool`

#### AnnotationToolbarBuilder

*new* class: `AnnotationToolbarBuilder`

*new* static final field: `Creator<AnnotationToolbarBuilder> CREATOR`

*new* method: `AnnotationToolbarBuilder addCustomButton(int, int, int)`

*new* method: `AnnotationToolbarBuilder addCustomSelectableButton(int, int, int)`

*new* method: `AnnotationToolbarBuilder addCustomSelectableStickyButton(int, int, int)`

*new* method: `AnnotationToolbarBuilder addCustomStickyButton(int, int, int)`

*new* method: `AnnotationToolbarBuilder addToolButton(ToolbarButtonType, int)`

*new* method: `AnnotationToolbarBuilder addToolStickyButton(ToolbarButtonType, int)`

*new* method: `AnnotationToolbarBuilder copy()`

*new* method: `AnnotationToolbarBuilder copyWithoutToolbarItems(Set<ToolbarButtonType>)`

*new* method: `int describeContents()`

*new* static method: `AnnotationToolbarBuilder fromIdJson(String, AnnotationToolbarBuilder)`

*new* method: `List<ToolbarItem> getStickyToolbarItems()`

*new* method: `int getToolbarIcon()`

*new* method: `ToolbarItem getToolbarItem(int)`

*new* method: `List<ToolbarItem> getToolbarItems()`

*new* method: `String getToolbarName()`

*new* method: `String getToolbarTag()`

*new* static method: `LinkedHashMap<Integer, ToolbarButtonType> jsonStrToMap(String)`

*new* static method: `String mapToJsonStr(LinkedHashMap<Integer, ToolbarButtonType>)`

*new* method: `AnnotationToolbarBuilder removeButtons(Set<ToolMode>)`

*new* method: `AnnotationToolbarBuilder setIcon(int)`

*new* method: `void setToolbarItems(List<ToolbarItem>)`

*new* method: `AnnotationToolbarBuilder setToolbarName(String)`

*new* method: `String toIdJson()`

*new* static method: `AnnotationToolbarBuilder withTag(String)`

*new* method: `void writeToParcel(Parcel, int)`

#### ToolbarButtonType

*new* final class: `ToolbarButtonType`

*new* static final field: `ToolbarButtonType AREA`

*new* static final field: `ToolbarButtonType ARROW`

*new* static final field: `ToolbarButtonType ATTACHMENT`

*new* static final field: `ToolbarButtonType CALLOUT`

*new* static final field: `ToolbarButtonType CHECKBOX`

*new* static final field: `ToolbarButtonType CHECKMARK`

*new* static final field: `ToolbarButtonType CIRCLE`

*new* static final field: `ToolbarButtonType COMBO_BOX`

*new* static final field: `ToolbarButtonType CROSS`

*new* static final field: `ToolbarButtonType CUSTOM_CHECKABLE`

*new* static final field: `ToolbarButtonType CUSTOM_UNCHECKABLE`

*new* static final field: `ToolbarButtonType DATE`

*new* static final field: `ToolbarButtonType DOT`

*new* static final field: `ToolbarButtonType EDIT_TOOLBAR`

*new* static final field: `ToolbarButtonType ERASER`

*new* static final field: `ToolbarButtonType FREE_HIGHLIGHT`

*new* static final field: `ToolbarButtonType FREE_TEXT`

*new* static final field: `ToolbarButtonType FREE_TEXT_SPACING`

*new* static final field: `ToolbarButtonType IMAGE`

*new* static final field: `ToolbarButtonType INK`

*new* static final field: `ToolbarButtonType LASSO_SELECT`

*new* static final field: `ToolbarButtonType LINE`

*new* static final field: `ToolbarButtonType LINK`

*new* static final field: `ToolbarButtonType LIST_BOX`

*new* static final field: `ToolbarButtonType MULTI_SELECT`

*new* static final field: `ToolbarButtonType PAN`

*new* static final field: `ToolbarButtonType PERIMETER`

*new* static final field: `ToolbarButtonType POLYGON`

*new* static final field: `ToolbarButtonType POLYLINE`

*new* static final field: `ToolbarButtonType POLY_CLOUD`

*new* static final field: `ToolbarButtonType RADIO_BUTTON`

*new* static final field: `ToolbarButtonType RECT_AREA`

*new* static final field: `ToolbarButtonType REDO`

*new* static final field: `ToolbarButtonType RULER`

*new* static final field: `ToolbarButtonType SIGNATURE`

*new* static final field: `ToolbarButtonType SIGNATURE_FIELD`

*new* static final field: `ToolbarButtonType SOUND`

*new* static final field: `ToolbarButtonType SQUARE`

*new* static final field: `ToolbarButtonType STAMP`

*new* static final field: `ToolbarButtonType STICKY_NOTE`

*new* static final field: `ToolbarButtonType TEXT_FIELD`

*new* static final field: `ToolbarButtonType TEXT_HIGHLIGHT`

*new* static final field: `ToolbarButtonType TEXT_SQUIGGLY`

*new* static final field: `ToolbarButtonType TEXT_STRIKEOUT`

*new* static final field: `ToolbarButtonType TEXT_UNDERLINE`

*new* static final field: `ToolbarButtonType UNDO`

*new* final field: `int icon`

*new* final field: `boolean isCheckable`

*new* final field: `int title`

*new* method: `int getValue()`

*new* static method: `ToolbarButtonType valueOf(String)`

*new* static method: `ToolbarButtonType[] values()`

#### ToolbarItem

*new* class: `ToolbarItem`

*new* constructor: `ToolbarItem(String, ToolbarButtonType, int, boolean, int, int, int)`

*new* constructor: `ToolbarItem(String, ToolbarButtonType, int, boolean, int, int, int, boolean)`

*new* static final field: `Creator<ToolbarItem> CREATOR`

*new* static final field: `ToolbarItem DEFAULT_PAN_TOOl`

*new* final field: `int buttonId`

*new* final field: `int icon`

*new* final field: `boolean isCheckable`

*new* final field: `boolean isVisible`

*new* final field: `int showAsAction`

*new* final field: `int title`

*new* final field: `ToolbarButtonType toolbarButtonType`

*new* final field: `String toolbarId`

*new* method: `ToolbarItem copy()`

*new* method: `ToolbarItem copy(boolean)`

*new* method: `int describeContents()`

*new* method: `boolean equals(Object)`

*new* method: `String getStyleId()`

*new* method: `int hashCode()`

*new* method: `void writeToParcel(Parcel, int)`

#### AnnotationToolbarComponent

*new* class: `AnnotationToolbarComponent`

*new* constructor: `AnnotationToolbarComponent(LifecycleOwner, PresetBarViewModel, ToolManagerViewModel, ViewGroup)`

*new* constructor: `AnnotationToolbarComponent(LifecycleOwner, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

*new* static final field: `String TOOLBAR_ITEM_BUNDLE`

*new* static final field: `String TOOLMODE_DISABLED`

*new* method: `void addButtonClickListener(AnnotationButtonClickListener)`

*new* method: `void addToolbarOverlay(View)`

*new* method: `void clearState()`

*new* method: `void clearToolbarOverlayView()`

*new* method: `void closeEditToolbar()`

*new* method: `void hide(boolean)`

*new* method: `void inflateWithBuilder(AnnotationToolbarBuilder)`

*new* method: `void onEditToolbarDismissed()`

*new* method: `void rememberLastUsedTool(boolean)`

*new* method: `void removeButtonClickListener(AnnotationButtonClickListener)`

*new* method: `void selectToolbarButton(int)`

*new* method: `void setItemEnabled(int, boolean)`

*new* method: `void setItemVisibility(int, boolean)`

*new* method: `void setToolModeFilter(Set<ToolMode>)`

*new* method: `void setToolbarButtonVisibility(ToolbarButtonType, boolean)`

*new* method: `void show(boolean)`

*new* method: `void showEditToolbar(ToolMode, Annot, int)`

*new* method: `void slideIn()`

*new* method: `void slideOut()`

*new* method: `void updateToolbarState()`

#### AnnotationButtonClickListener

*new* interface: `AnnotationButtonClickListener`

*new* method: `boolean onInterceptItemClick(MenuItem)`

*new* method: `void onPostItemClick(MenuItem)`

*new* method: `void onPreItemClick(MenuItem)`

#### AnnotationToolbarTheme

*new* class: `AnnotationToolbarTheme`

*new* constructor: `AnnotationToolbarTheme(int, int, int, int, int, int, int, int, int)`

*new* final field: `int backgroundColor`

*new* final field: `int backgroundColorSecondary`

*new* final field: `int disabledIconColor`

*new* final field: `int editMenuButton`

*new* final field: `int iconColor`

*new* final field: `int presetTextColor`

*new* final field: `int selectedBackgroundColor`

*new* final field: `int selectedIconColor`

*new* final field: `int textColor`

*new* static method: `AnnotationToolbarTheme fromContext(Context)`

#### DefaultToolbars

*new* class: `DefaultToolbars`

*new* constructor: `DefaultToolbars()`

*new* static final field: `String TAG_ANNOTATE_TOOLBAR`

*new* static final field: `String TAG_DRAW_TOOLBAR`

*new* static final field: `String TAG_FAVORITE_TOOLBAR`

*new* static final field: `String TAG_FILL_AND_SIGN_TOOLBAR`

*new* static final field: `String TAG_INSERT_TOOLBAR`

*new* static final field: `String TAG_MEASURE_TOOLBAR`

*new* static final field: `String TAG_PENS_TOOLBAR`

*new* static final field: `String TAG_PREPARE_FORM_TOOLBAR`

*new* static final field: `String TAG_VIEW_TOOLBAR`

*new* static field: `AnnotationToolbarBuilder defaultAnnotateToolbar`

*new* static field: `AnnotationToolbarBuilder defaultDrawToolbar`

*new* static field: `AnnotationToolbarBuilder defaultFavoriteToolbar`

*new* static field: `AnnotationToolbarBuilder defaultFillAndSignToolbar`

*new* static field: `AnnotationToolbarBuilder defaultInsertToolbar`

*new* static field: `AnnotationToolbarBuilder defaultMeasureToolbar`

*new* static field: `AnnotationToolbarBuilder defaultPensToolbar`

*new* static field: `AnnotationToolbarBuilder defaultPrepareFormToolbar`

*new* static field: `AnnotationToolbarBuilder defaultViewToolbar`

#### DefaultToolbars.ButtonId

*new* final class: `ButtonId`

*new* static final field: `ButtonId ADD_PAGE`

*new* static final field: `ButtonId AREA`

*new* static final field: `ButtonId ARROW`

*new* static final field: `ButtonId ATTACHMENT`

*new* static final field: `ButtonId CALLOUT`

*new* static final field: `ButtonId CHECKBOX`

*new* static final field: `ButtonId CHECKMARK`

*new* static final field: `ButtonId CIRCLE`

*new* static final field: `ButtonId COMBO_BOX`

*new* static final field: `ButtonId CROSS`

*new* static final field: `ButtonId CUSTOMIZE`

*new* static final field: `ButtonId DATE`

*new* static final field: `ButtonId DOT`

*new* static final field: `ButtonId ERASER`

*new* static final field: `ButtonId FREE_HIGHLIGHT`

*new* static final field: `ButtonId FREE_HIGHLIGHT1`

*new* static final field: `ButtonId FREE_HIGHLIGHT2`

*new* static final field: `ButtonId FREE_TEXT`

*new* static final field: `ButtonId FREE_TEXT_SPACING`

*new* static final field: `ButtonId IMAGE`

*new* static final field: `ButtonId INK`

*new* static final field: `ButtonId INK_1`

*new* static final field: `ButtonId INK_2`

*new* static final field: `ButtonId LASSO_SELECT`

*new* static final field: `ButtonId LINE`

*new* static final field: `ButtonId LINK`

*new* static final field: `ButtonId LIST_BOX`

*new* static final field: `ButtonId MULTI_SELECT`

*new* static final field: `ButtonId PERIMETER`

*new* static final field: `ButtonId POLYGON`

*new* static final field: `ButtonId POLYLINE`

*new* static final field: `ButtonId POLY_CLOUD`

*new* static final field: `ButtonId RADIO_BUTTON`

*new* static final field: `ButtonId RECT_AREA`

*new* static final field: `ButtonId REDO`

*new* static final field: `ButtonId RULER`

*new* static final field: `ButtonId SIGNATURE`

*new* static final field: `ButtonId SIGNATURE_FIELD`

*new* static final field: `ButtonId SOUND`

*new* static final field: `ButtonId SQUARE`

*new* static final field: `ButtonId STAMP`

*new* static final field: `ButtonId STICKY_NOTE`

*new* static final field: `ButtonId TEXT_FIELD`

*new* static final field: `ButtonId TEXT_HIGHLIGHT`

*new* static final field: `ButtonId TEXT_SQUIGGLY`

*new* static final field: `ButtonId TEXT_STRIKEOUT`

*new* static final field: `ButtonId TEXT_UNDERLINE`

*new* static final field: `ButtonId UNDO`

*new* method: `int value()`

*new* static method: `ButtonId valueOf(String)`

*new* static method: `ButtonId[] values()`

#### TabletAnnotationToolbarComponent

*new* class: `TabletAnnotationToolbarComponent`

*new* constructor: `TabletAnnotationToolbarComponent(Fragment, FragmentManager, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

*new* method: `void closeEditToolbar()`

*new* method: `void showEditToolbar(ToolMode, Annot, int, Bundle)`

#### ToolbarSharedPreferences

*new* class: `ToolbarSharedPreferences`

*new* constructor: `ToolbarSharedPreferences()`

*new* method: `LinkedHashMap<String, List<ToolbarItem>> getAllDefaultToolbarItems()`

*new* method: `AnnotationToolbarBuilder getAnnotateToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getCustomToolbar(Context, AnnotationToolbarBuilder)`

*new* method: `AnnotationToolbarBuilder getDrawToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getFavoriteToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getFillAndSignToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getInsertToolbar(Context)`

*new* static method: `String getLastOpenedToolbarTag(Context)`

*new* static method: `int getLastUsedTool(Context, String)`

*new* method: `AnnotationToolbarBuilder getMeasureToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getPensToolbar(Context)`

*new* method: `AnnotationToolbarBuilder getPrepareFormToolbar(Context)`

*new* static method: `int getToolbarStringResByName(String)`

*new* method: `AnnotationToolbarBuilder getViewToolbar()`

*new* static method: `void setCustomToolbar(Context, AnnotationToolbarBuilder)`

*new* static method: `void setLastOpenedToolbarTag(Context, String)`

*new* static method: `void setLastUsedTool(Context, String, int)`

#### ActionButton

*new* class: `ActionButton`

*new* constructor: `ActionButton(Context)`

*new* constructor: `ActionButton(Context, AttributeSet)`

*new* constructor: `ActionButton(Context, AttributeSet, int)`

*new* constructor: `ActionButton(Context, AttributeSet, int, int)`

*new* method: `void deselect()`

*new* method: `void disable()`

*new* method: `void enable()`

*new* method: `MenuItem getMenuItem()`

*new* static method: `int getPreviewColor(AnnotStyle)`

*new* method: `void hide()`

*new* method: `boolean isCheckable()`

*new* method: `boolean isSelected()`

*new* method: `boolean isVisible()`

*new* method: `void select()`

*new* method: `void setAlwaysShowIconHighlightColor(boolean)`

*new* method: `void setCheckable(boolean)`

*new* method: `void setDisabledIconColor(int)`

*new* method: `void setIcon(Drawable)`

*new* method: `void setIconAlpha(int)`

*new* method: `void setIconColor(int)`

*new* method: `void setIconHighlightColor(int)`

*new* method: `void setIconSize(int)`

*new* method: `void setMenuItem(MenuItem)`

*new* method: `void setSelected(boolean)`

*new* method: `void setSelectedBackgroundColor(int)`

*new* method: `void setSelectedIconColor(int)`

*new* method: `void setShowIconHighlightColor(boolean)`

*new* method: `void show()`

*new* method: `void updateAppearance(AnnotStyle)`

#### ActionToolbar

*new* class: `ActionToolbar`

*new* constructor: `ActionToolbar(Context)`

*new* constructor: `ActionToolbar(Context, AttributeSet)`

*new* constructor: `ActionToolbar(Context, AttributeSet, int)`

*new* constructor: `ActionToolbar(Context, AttributeSet, int, int)`

*new* constructor: `ActionToolbar(Context, AnnotationToolbarTheme)`

*new* method: `void addOnMenuItemClickListener(OnMenuItemClickListener)`

*new* method: `void addToolbarOverlay(View)`

*new* method: `void clearToolbarOverlayView()`

*new* method: `void deselectAllTools()`

*new* method: `FrameLayout getPresetContainer()`

*new* method: `boolean hasVisibleItems()`

*new* method: `void inflateWithBuilder(AnnotationToolbarBuilder)`

*new* method: `void selectToolbarButtonIfAvailable(int)`

*new* method: `void setItemEnabled(int, boolean)`

*new* method: `void setItemSelected(int, boolean)`

*new* method: `void setItemVisibility(int, boolean)`

*new* method: `void toggleToolbarButtons(int)`

*new* method: `void updateAccentButton(int, int, int)`

#### AnnotationToolbarView

*new* class: `AnnotationToolbarView`

*new* constructor: `AnnotationToolbarView(ViewGroup)`

*new* method: `void addOnMenuItemClickListener(OnMenuItemClickListener)`

*new* method: `void addToolbarOverlay(View)`

*new* method: `void clearToolbarOverlayView()`

*new* method: `Context getContext()`

*new* method: `int getHeight()`

*new* method: `FrameLayout getPresetContainer()`

*new* method: `void hide(boolean)`

*new* method: `void inflateWithBuilder(AnnotationToolbarBuilder)`

*new* method: `boolean isShown()`

*new* method: `void selectToolbarButtonIfAvailable(int)`

*new* method: `void setItemEnabled(int, boolean)`

*new* method: `void setItemVisibility(int, boolean)`

*new* method: `void show(boolean)`

*new* method: `void toggleToolbarButtons(ToolbarItem)`

*new* method: `void updateAccentButton(int, int, int)`

#### SingleButtonToolbar

*new* class: `SingleButtonToolbar`

*new* constructor: `SingleButtonToolbar(Context)`

*new* constructor: `SingleButtonToolbar(Context, AttributeSet)`

*new* constructor: `SingleButtonToolbar(Context, AttributeSet, int)`

*new* static final field: `String BUILDER_TAG`

*new* method: `void addOnButtonClickListener(OnClickListener)`

*new* method: `boolean handleKeyUp(int, KeyEvent)`

*new* method: `void setButtonText(String)`

*new* method: `void setOnEditToolbarChangeListener(OnEditToolbarChangedListener)`

*new* method: `void setup(PDFViewCtrl, OnToolSelectedListener, ArrayList<AnnotStyle>, boolean, boolean, boolean, boolean, boolean)`

*new* method: `void show()`

*new* method: `void updateControlButtons(boolean, boolean, boolean, boolean)`

*new* method: `void updateDrawColor(int, int)`

*new* method: `void updateDrawStyles(ArrayList<AnnotStyle>)`

#### TabActionButton

*new* class: `TabActionButton`

*new* constructor: `TabActionButton(Context)`

*new* constructor: `TabActionButton(Context, AttributeSet)`

*new* constructor: `TabActionButton(Context, AttributeSet, int)`

*new* constructor: `TabActionButton(Context, AttributeSet, int, int)`

*new* method: `void setTabCount(int)`

#### ToolbarButton

*new* interface: `ToolbarButton`

*new* method: `void deselect()`

*new* method: `void disable()`

*new* method: `void enable()`

*new* method: `int getId()`

*new* method: `void hide()`

*new* method: `boolean isCheckable()`

*new* method: `boolean isSelected()`

*new* method: `void select()`

*new* method: `void setCheckable(boolean)`

*new* method: `void show()`

### pdftron-collab package

#### CollabViewerBuilder

*new* method: `Object usingTheme(int)`

*modified* class: `CollabViewerBuilder`

|       | Declaration                                                                                        |
| ----- | -------------------------------------------------------------------------------------------------- |
| From: | public class CollabViewerBuilder extends SkeletalFragmentBuilder                                   |
| To:   | public class CollabViewerBuilder extends SkeletalFragmentBuilder implements ViewerBuilderInterface |

#### CollabViewerBuilder2

*new* class: `CollabViewerBuilder2`

#### CollabViewerTabFragment

*removed* method: `void onViewCreated(View, Bundle)`

#### CollabViewerTabFragment2

*new* class: `CollabViewerTabFragment2`

#### CollabViewerTabFragment2.CollabTabListener

*new* interface: `CollabViewerTabFragment2.CollabTabListener`

*new* method: `CollabManager getCollabManager()`

#### CollabViewerTabHostFragment2

*new* class: `CollabViewerTabHostFragment2`

#### CollabViewerTabHostFragment2.CollabTabHostListener

*new* interface: `CollabViewerTabHostFragment2.CollabTabHostListener`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/android/changelogs/version-7/v7-1-5.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
