Как отобразить пользовательский диалоговый фрагмент при создании аннотаций 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() Затем вы можете показать свой пользовательский интерфейс создания аннотаций.

Другие вопросы по тегам