diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-03-22 18:49:57 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-03-22 18:49:57 +0300 |
commit | e73639c801e22f69220ef339f46e1e190c0297f0 (patch) | |
tree | cb207562efb883bfbed5fa36a64358920b9ae1e1 /app/src/main/java | |
parent | 71542a36185cdba4cdcb58ecc60c2db07f72159a (diff) |
Fix #1046 Remember scroll position in preview mode
Diffstat (limited to 'app/src/main/java')
3 files changed, 33 insertions, 16 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java index 5a00e4fd..ca104112 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java @@ -135,26 +135,22 @@ public abstract class BaseNoteFragment extends BrandedFragment implements Catego @Nullable protected abstract ScrollView getScrollView(); + protected abstract void scrollToY(int scrollY); + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + this.originalScrollY = note.getScrollY(); + scrollToY(originalScrollY); final ScrollView scrollView = getScrollView(); if (scrollView != null) { - scrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { - if (scrollView.getScrollY() > 0) { - note.setScrollY(scrollView.getScrollY()); - } - }); - } - } - - @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - final ScrollView scrollView = getScrollView(); - if (scrollView != null) { - this.originalScrollY = note.getScrollY(); - scrollView.post(() -> scrollView.scrollTo(0, originalScrollY)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + scrollView.setOnScrollChangeListener((View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) -> { + if (scrollY > 0) { + note.setScrollY(scrollY); + } + }); + } } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java index 5aca156d..b6d389f5 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java @@ -79,6 +79,13 @@ public class NoteEditFragment extends SearchableBaseNoteFragment { } @Override + protected void scrollToY(int y) { + if (binding != null) { + binding.scrollView.post(() -> binding.scrollView.setScrollY(y)); + } + } + + @Override protected Layout getLayout() { binding.editContent.onPreDraw(); return binding.editContent.getLayout(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java index 0cdd4d40..409cefab 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java @@ -42,6 +42,9 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O protected FragmentNotePreviewBinding binding; + @Nullable + private Runnable setScrollY; + @Override public void onPrepareOptionsMenu(@NonNull Menu menu) { super.onPrepareOptionsMenu(menu); @@ -55,6 +58,17 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O } @Override + protected synchronized void scrollToY(int y) { + this.setScrollY = () -> { + if (binding != null) { + Log.v("SCROLL set (preview) to", y + ""); + binding.scrollView.post(() -> binding.scrollView.setScrollY(y)); + } + setScrollY = null; + }; + } + + @Override protected FloatingActionButton getSearchNextButton() { return binding.searchNext; } @@ -83,7 +97,7 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O super.onActivityCreated(savedInstanceState); registerInternalNoteLinkHandler(); - binding.singleNoteContent.setMarkdownString(note.getContent()); + binding.singleNoteContent.setMarkdownString(note.getContent(), setScrollY); binding.singleNoteContent.setMovementMethod(LinkMovementMethod.getInstance()); changedText = note.getContent(); |