Как отобразить пользовательский диалоговый фрагмент при создании аннотаций PDF с помощью PSPDFKit
Я изучаю PDF-библиотеку PSPDFKit для Android.
// Inside my app's dependencies {}
implementation 'com.pspdfkit:pspdfkit-demo:4.0.2'
Библиотека впечатляет и имеет много ценных функций "Из коробки". Тем не менее, я столкнулся с проблемой с фрагментом диалога, который отображается при создании заметок.
Мне нужно иметь настраиваемый диалоговый интерфейс, поскольку файлы PDF, отображаемые в моем приложении, позволяют нескольким пользователям добавлять / редактировать аннотации. Это требует диалоговое окно, которое отображается при редактировании аннотаций, чтобы содержать изображение профиля пользователя и полное имя, которое создало аннотацию.
я использую com.pspdfkit.ui.PdfFragment
как дочерний фрагмент в моем приложении и не может видеть какой-либо способ, который позволяет мне предоставлять пользовательский dialogFragment при создании и / или редактировании примечаний заметки.
Можно ли настроить фрагмент диалога, отображаемый при создании / редактировании фрагмента заметки в PSPDFKit?
Исходя из того, что я вижу в исходном коде, именно этот метод мне нужно переопределить в PSPDFKit.
public void enterAnnotationCreationMode(@NonNull final AnnotationTool annotationTool) {
this.viewCoordinator.a(new b() {
public void run(@NonNull FrameLayout container, @NonNull PdfPasswordView passwordView, @NonNull View errorView, @NonNull final DocumentView documentView) {
el var10000 = com.pspdfkit.framework.a.d();
PdfFragment.this.getContext();
if(var10000.a(PdfFragment.this.configuration)) {
if(!PdfFragment.this.getAnnotationPreferences().isAnnotationCreatorSet()) {
AnnotationCreatorInputDialogFragment.show(PdfFragment.this.getActivity().getSupportFragmentManager(), (String)null, new OnAnnotationCreatorSetListener() {
public void onAnnotationCreatorSet(String annotationCreator) {
documentView.enterAnnotationCreationMode(annotationTool);
}
public void onAbort() {
}
});
com.pspdfkit.framework.a.f().a("show_annotation_creator_dialog").a();
} else {
documentView.enterAnnotationCreationMode(annotationTool);
}
} else {
throw new PSPDFKitException("Entering annotation creation mode for " + annotationTool + " is not permitted, either by the license or configuration.");
}
}
}, true);
}
1 ответ
Начиная с PSPDFKit 4.0.2 нет способа заменить пользовательский интерфейс редактора аннотаций заметок. Как правило, рекомендуется обратиться в службу поддержки PSPDFKit за отсутствующими функциями по адресу https://pspdfkit.com/support/request/
Однако это уже отслеживается командой PSPDFKit и, скорее всего, будет доступно в будущих версиях.
В качестве обходного пути: вы можете реализовать свое собственное действие заметки и добавить его в AnnotationCreationToolbar
, Существует статья о том, как изменить действия на панели инструментов с помощью API группировки панели инструментов. Это может также использоваться для удаления существующих действий и добавления новых.
Используя OnContextualToolbarLifecycleListener
Вы можете зарегистрировать свою собственную логику фильтра, которая удаляет действие заметки по умолчанию и заменяет его вашей собственной логикой (которая затем отображает ваш пользовательский диалог).
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
toolbarCoordinatorLayout.setOnContextualToolbarLifecycleListener(this);
}
@Override
public void onPrepareContextualToolbar(@NonNull ContextualToolbar toolbar) {
if (toolbar instanceof AnnotationCreationToolbar) {
toolbar.setMenuItemGroupingRule(new CustomNoteAnnotationActionRule(this));
}
}
Затем вы можете зарегистрироваться, когда нажимаете на иконку вашей заметки, чтобы переключиться в "режим создания заметки". Всякий раз, когда DocumentListener#onPageClick()
Затем вы можете показать свой пользовательский интерфейс создания аннотаций.