Text selection events and notifications
You can create custom listeners for TextSelectionManager
to handle changes in text selection and text selection mode (entering and exiting):
class MyActivity : PdfActivity(), TextSelectionManager.OnTextSelectionChangeListener, TextSelectionManager.OnTextSelectionModeChangeListener { const val TAG = "MyActivity.TextSelection" override fun onCreate(savedInstanceState: Bundle?) { PdfFragment.addOnTextSelectionModeChangeListener(this) PdfFragment.addOnTextSelectionChangeListener(this) } override fun onDestroy(savedInstanceState: Bundle?) { PdfFragment.removeOnTextSelectionModeChangeListener(this) PdfFragment.removeOnTextSelectionChangeListener(this) } override fun onEnterTextSelectionMode(controller: TextSelectionController) { Log.i(TAG, "Text selection mode has started.") } override fun onExitTextSelectionMode(controller: TextSelectionController) { Log.i(TAG, "Text selection mode has ended.") } override fun onTextSelectionChange(newTextSelection: TextSelection?, currentTextSelection: TextSelection?): Boolean { if (newTextSelection != null) { Log.i(TAG, "Selected text was: ${newTextSelection.text}") } else { Log.i(TAG, "Text selection is cleared.") } // Return `false` to prevent changes to the current selection state, if needed. return true } }
public class MyActivity extends PdfActivity implements TextSelectionManager.OnTextSelectionChangeListener, TextSelectionManager.OnTextSelectionModeChangeListener{ private static final String TAG = "MyActivity.TextSelection"; @Override protected void onCreate(Bundle savedInstanceState) { getPdfFragment().addOnTextSelectionModeChangeListener(this); getPdfFragment().addOnTextSelectionChangeListener(this); } @Override protected void onDestroy(Bundle savedInstanceState) { getPdfFragment().removeOnTextSelectionModeChangeListener(this); getPdfFragment().removeOnTextSelectionChangeListener(this); } @Override public void onEnterTextSelectionMode(@NonNull TextSelectionController controller) { Log.i(TAG, "Text selection mode has started."); } @Override public void onExitTextSelectionMode(@NonNull TextSelectionController controller) { Log.i(TAG, "Text selection mode has ended."); } @Override public boolean onTextSelectionChange(@Nullable TextSelection newTextSelection, @Nullable TextSelection currentTextSelection) { if (newTextSelection != null) { Log.i(TAG, String.format("Selected text was: %s", newTextSelection.text)); } else { Log.i(TAG, "Text selection is cleared."); } // Return `false` to prevent changes to the current selection state, if needed. return true; } }
By implementing these listeners, you can add custom reactions to text selection events.
This setup doesn’t override the default behavior — it only adds additional listeners. If you need to completely change the behavior (e.g. replacing the toolbar with a custom user interface), use
PdfFragment
in a custom activity and bind it to theTextSelectionController
.
To learn how to programmatically enter or leave text selection mode and how to customize our text selection UI, have as look at our full text selection guide.