Common Small Touch Targets in Pdf Reader Apps: Causes and Fixes

PDF readers often inherit UI patterns from desktop viewers, where mouse precision makes tiny controls acceptable. When ported to touch devices, several technical decisions keep those controls undersiz

January 06, 2026 · 5 min read · Common Issues

What causes small touch targets in PDF reader apps (technical root causes)

PDF readers often inherit UI patterns from desktop viewers, where mouse precision makes tiny controls acceptable. When ported to touch devices, several technical decisions keep those controls undersized:

These root causes are usually invisible in functional testing because the controls still respond to precise finger taps; they only surface when users with larger fingers, tremors, or reliance on assistive touch interact with the app.

Real-world impact

Specific manifestations in PDF reader apps

#ManifestationWhere it appearsTypical size (dp)Why it’s problematic
1Page‑turn arrows (left/right)Bottom toolbar24 × 24Users with larger fingers miss the arrow, causing unintended page jumps or no action.
2Highlight/underline tool iconsAnnotation toolbar20 × 20Small hit area leads to repeated taps, frustration, and abandonment of annotation workflows.
3Text‑selection handlesIn‑page text selection16 × 16 (drag handles)Hard to grab; users often select wrong text or trigger the context menu accidentally.
4Bookmark list itemsSidebar/drawerHeight 32 dp, width varies with title lengthShort bookmark names produce narrow tappable rows, making it easy to miss the item and open the wrong chapter.
5Search‑bar magnifier iconTop app bar22 × 22Users tap the empty space beside the icon, triggering no action and thinking the search is broken.
6“Close” button on pop‑up dialogsAnnotation properties pane20 × 20Accidental taps outside the dialog close it, losing unsaved changes.
7Form‑field toggle (checkbox/radio) in PDF formsForm filling view18 × 18Users with motor impairments cannot reliably toggle the field, leading to incomplete forms.

How to detect small touch targets

Automated tools

Manual techniques

What to look for in the code

How to fix each example (code‑level guidance)

1. Page‑turn arrows

Android


<ImageButton
    android:id="@+id/btnPrev"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:src="@drawable/ic_arrow_left"
    android:padding="12dp"   <!-- ensures the icon stays centered -->
    android:background="?attr/selectableItemBackgroundBorderless" />

iOS (SwiftUI)


Button(action: goPrevious) {
    Image(systemName: "chevron.left")
        .frame(width: 48, height: 48)
        .contentShape(Rectangle())
}

Increase the touch area to at least 48 dp while keeping the visual icon size unchanged via padding or contentSize.

2. Highlight/underline tool icons

Wrap the icon in a TouchableOpacity (React Native) or a FrameLayout with explicit dimensions, or set android:minWidth/android:minHeight.

If using a custom view, override getTouchDelegate (Android) or accessibilityHitTest (iOS) to return an expanded rect.

3. Text‑selection handles

Most PDF rendering libraries expose a way to customize handle size. For example, with PdfRenderer (Android) set:


pdfRenderer.setHandleRadius(24f); // radius in dp, yields ~48dp diameter

In PDFKit (iOS), adjust:


pdfView.displayMode = .singlePageContinuous
pdfView.displaysPageBreaks = false
pdfView.displayDirection = .vertical
pdfView.autoScroller = true
pdfView.minimumHandleSize = CGSize(width: 48, height: 48)

If the library does not expose this, subclass the handle view and increase its frame.

4. Bookmark list items

Use a RecyclerView with setMinimumHeight(48) on each item layout, or enforce via ItemDecoration:


class BookmarkItemDecoration : RecyclerView.ItemDecoration() {
    override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
        outRect.top = 0
        outRect.bottom = 8
        outRect.left = 0
        outRect.right = 0
        if (view.height < 48) {
            val diff = 48 - view.height
            outRect.top += diff / 2
            outRect.bottom += diff - diff / 2
        }
    }
}

5. Search‑bar magnifier icon

Ensure the search bar’s contentInsets or padding yields a minimum tap width of 48 dp around the icon. In Material Design, use Toolbar with android:minHeight="?attr/actionBarSize" and set the icon’s android:padding to 12 dp.

6. Close button on pop‑up dialogs

Dialogs often use WindowManager.LayoutParams.WRAP_CONTENT.

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free