Some test text!
Android / Guides / Thumbnail slider
ThumbnailSlider is a LinearLayout that contains an AppCompatSeekBar to change pages, and two AppCompatImageButton on the left and right side. When sliding the seekbar, it displays a small page preview on top of the thumbnail slider.

To set up your layout with the thumbnail slider, add a <ThumbnailSlider> element to your XML layout. For example, your layout may look like this:
<com.pdftron.pdf.controls.ThumbnailSlider
android:id="@+id/thumbnailSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"/>Then, attach a PDFViewCtrl to the thumbnail slider. If PDFViewCtrl is in the same layout, you can set it by adding the app:pdfviewctrlId attribute:
<com.pdftron.pdf.controls.ThumbnailSlider
android:id="@+id/thumbnailSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:pdfviewctrlId="@id/pdfviewctrl"/>If PDFViewCtrl is not in the same layout, you can programmatically set it to a thumbnail slider by calling setPdfViewCtrl(PDFViewCtrl):
ThumbnailSlider thumbnailSlider = findViewById(R.id.thumbnailSlider);
thumbnailSlider.setPdfViewCtrl(mPdfViewCtrl);You can change the image drawable of the left menu item and right menu item buttons by adding the app:leftMenuItemDrawable and app:rightMenuItemDrawable attributes in your xml layout.
Example
<com.pdftron.pdf.controls.ThumbnailSlider
android:id="@+id/thumbnailSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:leftMenuItemDrawable="@drawable/left_icon"
app:rightMenuItemDrawable="@drawable/right_icon"/>Additionally, you can remove the left and right slider buttons by setting the drawables to null:
<com.pdftron.pdf.controls.ThumbnailSlider
android:id="@+id/thumbnailSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:leftMenuItemDrawable="@null"
app:rightMenuItemDrawable="@null"/>You can also change the buttons programmatically by calling setMenuItem(@DrawableRes int, @MenuItemPosition int). The second parameter determines the position of the button which is either POSITION_LEFT or POSITION_RIGHT.
Example
thumbnailSlider.setMenuItem(R.drawable.left_icon, ThumbnailSlider.POSITION_LEFT);You can add a menu item clicked event listener by calling setOnMenuItemClickedListener to be notified when one of the left or right buttons is clicked.
thumbnailSlider.setOnMenuItemClickedListener(new ThumbnailSlider.OnMenuItemClickedListener(){
@Override
public void onMenuItemClicked(int menuItemPosition) {
if (menuItemPosition == ThumbnailSlider.POSITION_LEFT) {
// The left button was clicked.
} else {
// The right button was clicked.
}
}
});You can set a thumbnail slider seekbar event listener by calling setThumbSliderListener to be notified when thumbnail slider touch tracking has started/stopped:
thumbnailSlider.setThumbSliderListener(new ThumbnailSlider.OnThumbnailSliderTrackingListener() {
@Override
public void onThumbSliderStartTrackingTouch() {
// Called when tracking on the seekbar has started
}
@Override
public void onThumbSliderStopTrackingTouch(int pageNum) {
// Called when tracking on the seekbar has stopped
}
});You can customize the color of the left and right menu buttons as well as the seekbar by setting a custom style to the thumbnail_slider attribute in your apps's theme. The custom style must extend ThumbnailSliderStyle. For example:
<style name="PDFTronAppTheme" parent="PDFTronAppThemeBase">
<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>
<!-- Set your custom style in your app theme -->
<item name="thumbnail_slider">@style/CustomThumbnailSliderStyle</item>
</style>
<style name="CustomThumbnailSliderStyle" parent="ThumbnailSliderStyle">
<!-- Change the background color of the slider-->
<item name="colorBackground">@android:color/red</item>
<!-- Change the color of the seekbar and seekbar icon in the slider-->
<item name="seekbarColor">@android:color/black</item>
<!-- Change the color of the menu button left of the slider -->
<item name="leftMenuItemColor">@android:color/black</item>
<!-- Change the color of the menu button right of the slider -->
<item name="rightMenuItemColor">@android:color/black</item>
<!-- Change the description of the menu button left of the slider -->
<item name="leftMenuItemContentDescription">"LeftDescription"</item>
<!-- Change the color of the menu button right of the slider -->
<item name="rightMenuItemContentDescription">"RightDescription"</item>
<!-- Change the icon of the menu button left of the slider -->
<item name="leftMenuItemDrawable">@drawable/ic_thumbnails_grid_black_24dp</item>
<!-- Change the icon of the menu button right of the slider -->
<item name="rightMenuItemDrawable">@drawable/ic_list_white_24dp</item>
</style>If you want to further customize the seekbar's layout attributes and appearance, such as padding and height, you can override the default seekbar style R.style.ThumbnailSliderStyle.Seekbar by declaring the following in res/values/styles.xml:
Example
For API < 21:
<style name="ThumbnailSliderStyle.Seekbar" parent="Widget.AppCompat.SeekBar" >
<!-- add paddingTop and paddingBottom for api < 21 here for avoiding seekbar becomes too thick-->
<item name="android:paddingTop">16dp</item>
<item name="android:paddingBottom">16dp</item>
<item name="android:minHeight">2dp</item>
<item name="android:maxHeight">2dp</item>
<item name="android:layout_gravity">center</item>
</style>For API >= 21:
<style name="ThumbnailSliderStyle.Seekbar" parent="Widget.AppCompat.SeekBar">
<item name="android:progressTint">?attr/colorPrimary</item>
<item name="android:progressBackgroundTint">?attr/colorPrimary</item>
<item name="android:colorControlActivated">?attr/colorPrimary</item>
<item name="android:colorControlHighlight">?attr/colorPrimary</item>
<item name="android:minHeight">2dp</item>
<item name="android:maxHeight">2dp</item>
<item name="android:layout_gravity">center</item>
</style>The seekbar progress bar drawable can be customized by overriding the seek_track_material.xml drawable file. Similarly, the seekbar thumbnail drawable can be changed by overriding the seek_thumb.xml drawable file. For reference, the source code for these drawables can be found in the lib\src\PDFViewCtrlTools\res\drawable folder of the SDK package.
| Attribute | Description | Format |
|---|---|---|
app:pdfviewctrlId | Specifies the PDFViewCtrl view id | Reference |
app:leftMenuItemContentDescription | Specifies the content description of left menu item. | String |
app:rightMenuItemContentDescription | Specifies the content description of right menu item. | String |
app:leftMenuItemDrawable | Specifies left menu item drawable resource. | Reference |
app:rightMenuItemDrawable | Specifies right menu item drawable resource. | Reference |
app:colorBackground | Specifies background color. Uses default system background color if not defined. | Color |
app:seekbarColor | Specifies seekbar progress bar and thumb color. Default value: ?attr/colorPrimary in day mode and @android:color/white in night mode. | Color |
app:leftMenuItemColor | Specifies left menu item color. Default value: ?attr/colorPrimary in day mode and @android:color/white in night mode. | Color |
app:rightMenuItemColor | Specifies right menu item color. Default value: ?attr/colorPrimary in day mode and @android:color/white in night mode. | Color |
app:shadowEnabled | Specifies whether the shadow will appear. Default value: true. | Boolean |
Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales