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 946f8a24c..ad8e54bd4 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
@@ -375,6 +375,9 @@ protected void onNoteLoaded(Note note) {
note.setScrollY(scrollY);
}
onScroll(scrollY, oldScrollY);
+ if (listener != null) {
+ listener.onScroll(scrollY, oldScrollY);
+ }
});
}
@@ -538,5 +541,9 @@ enum Mode {
void onNoteUpdated(Note note);
void changeMode(@NonNull Mode mode, boolean reloadNote);
+
+ void onScroll(int scrollY, int oldScrollY);
+
+ void onSearchActive(boolean active);
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
index 1a669e615..9984d92d5 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/EditNoteActivity.java
@@ -12,6 +12,7 @@
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
+import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -28,6 +29,7 @@
import androidx.fragment.app.Fragment;
import androidx.preference.PreferenceManager;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
@@ -50,6 +52,7 @@
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.shared.model.NavigationCategory;
+import it.niedermann.owncloud.notes.shared.util.ExtendedFabUtil;
import it.niedermann.owncloud.notes.shared.util.NoteUtil;
import it.niedermann.owncloud.notes.shared.util.ShareUtil;
@@ -109,6 +112,7 @@ protected void onCreate(final Bundle savedInstanceState) {
setSupportActionBar(binding.toolbar);
binding.toolbar.setOnClickListener((v) -> fragment.showEditTitleDialog());
setImeInsets();
+ setupFabs();
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
@@ -245,8 +249,61 @@ private void replaceFragment() {
} else {
binding.toolbar.setVisibility(View.VISIBLE);
}
+ updateFabVisibility();
}
+ private void setupFabs() {
+ binding.fabEdit.setOnClickListener(v -> changeMode(Mode.EDIT, false));
+ binding.fabDirectEdit.setOnClickListener(v -> changeMode(Mode.DIRECT_EDIT, false));
+ binding.fabPreview.setOnClickListener(v -> changeMode(Mode.PREVIEW, false));
+ }
+
+ private void updateFabVisibility() {
+ final boolean directEditEnabled = isDirectEditEnabled();
+
+ binding.fabEdit.hide();
+ binding.fabDirectEdit.hide();
+ binding.fabPreview.hide();
+
+ final var margin1x = getResources().getDimensionPixelSize(R.dimen.spacer_2x);
+ final var paramsEdit = (androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams) binding.fabEdit.getLayoutParams();
+ final var paramsPreview = (androidx.coordinatorlayout.widget.CoordinatorLayout.LayoutParams) binding.fabPreview.getLayoutParams();
+
+ if (fragment instanceof NotePreviewFragment && !(fragment instanceof NoteReadonlyFragment)) {
+ if (directEditEnabled) {
+ binding.fabDirectEdit.show();
+ binding.fabEdit.show();
+ paramsEdit.setMargins(margin1x, margin1x, margin1x, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 88, getResources().getDisplayMetrics()));
+ } else {
+ binding.fabEdit.show();
+ paramsEdit.setMargins(margin1x, margin1x, margin1x, margin1x);
+ }
+ } else if (fragment instanceof NoteEditFragment || fragment instanceof NoteDirectEditFragment) {
+ binding.fabPreview.show();
+ if (fragment instanceof NoteDirectEditFragment) {
+ paramsPreview.setMargins(margin1x, margin1x, margin1x, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 64, getResources().getDisplayMetrics()));
+ } else {
+ paramsPreview.setMargins(margin1x, margin1x, margin1x, margin1x);
+ }
+ }
+ binding.fabEdit.setLayoutParams(paramsEdit);
+ binding.fabPreview.setLayoutParams(paramsPreview);
+ }
+
+ private boolean isDirectEditEnabled() {
+ final long accountId = getAccountId();
+ final Account account = repo.getAccountById(accountId);
+ final boolean directEditRemotelyAvailable = account != null && account.isDirectEditingAvailable();
+ final var preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ return preferences.getBoolean(getString(R.string.pref_key_enable_direct_edit), true) && directEditRemotelyAvailable;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ menu.findItem(R.id.menu_preview).setVisible(false);
+ menu.findItem(R.id.menu_edit).setVisible(false);
+ return super.onPrepareOptionsMenu(menu);
+ }
/**
* Returns the preferred mode for the account. If the mode is "remember last" the last mode is returned.
@@ -449,6 +506,43 @@ public void onAccountPicked(@NonNull Account account) {
fragment.moveNote(account);
}
+ @Override
+ public void onSearchActive(boolean active) {
+ if (active) {
+ binding.fabEdit.hide();
+ binding.fabDirectEdit.hide();
+ binding.fabPreview.hide();
+ } else {
+ updateFabVisibility();
+ }
+ }
+
+ @Override
+ public void onScroll(int scrollY, int oldScrollY) {
+ if (isFabActive(binding.fabEdit)) {
+ ExtendedFabUtil.toggleVisibilityOnScroll(binding.fabEdit, scrollY, oldScrollY);
+ }
+ if (isFabActive(binding.fabDirectEdit)) {
+ ExtendedFabUtil.toggleVisibilityOnScroll(binding.fabDirectEdit, scrollY, oldScrollY);
+ }
+ if (isFabActive(binding.fabPreview)) {
+ ExtendedFabUtil.toggleVisibilityOnScroll(binding.fabPreview, scrollY, oldScrollY);
+ }
+ }
+
+ private boolean isFabActive(FloatingActionButton fab) {
+ final boolean directEditEnabled = isDirectEditEnabled();
+
+ if (fab == binding.fabEdit) {
+ return (fragment instanceof NotePreviewFragment && !(fragment instanceof NoteReadonlyFragment));
+ } else if (fab == binding.fabDirectEdit) {
+ return (fragment instanceof NotePreviewFragment && directEditEnabled);
+ } else if (fab == binding.fabPreview) {
+ return (fragment instanceof NoteEditFragment || fragment instanceof NoteDirectEditFragment);
+ }
+ return false;
+ }
+
@Override
public void applyBrand(int color) {
final var util = BrandingUtil.of(color, this);
@@ -456,5 +550,8 @@ public void applyBrand(int color) {
util.material.themeToolbar(binding.toolbar);
util.platform.colorViewBackground(getWindow().getDecorView());
util.platform.colorViewBackground(binding.getRoot());
+ util.material.themeFAB(binding.fabEdit);
+ util.material.themeFAB(binding.fabDirectEdit);
+ util.material.themeFAB(binding.fabPreview);
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt
index 95b76550d..cc25d8d0b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt
+++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt
@@ -43,7 +43,6 @@ import it.niedermann.owncloud.notes.persistence.entity.Note
import it.niedermann.owncloud.notes.persistence.sync.NotesAPI
import it.niedermann.owncloud.notes.shared.model.ApiVersion
import it.niedermann.owncloud.notes.shared.model.ISyncCallback
-import it.niedermann.owncloud.notes.shared.util.ExtendedFabUtil
import it.niedermann.owncloud.notes.shared.util.rx.DisposableSet
import okio.IOException
import java.util.concurrent.TimeUnit
@@ -84,35 +83,24 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
): View? {
Log.d(TAG, "onCreateView() called")
_binding = FragmentNoteDirectEditBinding.inflate(inflater, container, false)
- setupFab()
+ setupScrollDetection()
prepareWebView()
return binding?.root
}
- @SuppressLint("ClickableViewAccessibility") // touch listener only for UI purposes, no need to handle click
- private fun setupFab() {
- binding?.run {
- plainEditingFab.isExtended = false
- ExtendedFabUtil.toggleExtendedOnLongClick(plainEditingFab)
-
- // manually detect scroll as we can't get it from the webview (maybe with custom JS?)
- noteWebview.setOnTouchListener { _, event ->
- when (event.action) {
- MotionEvent.ACTION_DOWN -> {
- scrollStart = event.y.toInt()
- }
- MotionEvent.ACTION_UP -> {
- val scrollEnd = event.y.toInt()
- ExtendedFabUtil.toggleVisibilityOnScroll(
- plainEditingFab,
- scrollStart,
- scrollEnd,
- )
- }
+ @SuppressLint("ClickableViewAccessibility")
+ private fun setupScrollDetection() {
+ binding?.noteWebview?.setOnTouchListener { _, event ->
+ when (event.action) {
+ MotionEvent.ACTION_DOWN -> {
+ scrollStart = event.y.toInt()
+ }
+ MotionEvent.ACTION_UP -> {
+ val scrollEnd = event.y.toInt()
+ listener?.onScroll(scrollStart, scrollEnd)
}
- return@setOnTouchListener false
}
- plainEditingFab.setOnClickListener { switchToPlainEdit() }
+ return@setOnTouchListener false
}
}
@@ -218,7 +206,7 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
private fun handleLoadError() {
binding?.run {
val snackbar = BrandedSnackbar.make(
- plainEditingFab,
+ root,
getString(R.string.direct_editing_error),
Snackbar.LENGTH_INDEFINITE,
)
@@ -328,7 +316,6 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
val util = BrandingUtil.of(color, requireContext())
binding?.run {
- util.material.themeExtendedFAB(plainEditingFab)
util.platform.colorCircularProgressBar(progress, ColorRole.PRIMARY)
}
}
@@ -398,7 +385,6 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
binding?.run {
progress.isVisible = loading
noteWebview.isVisible = !loading
- plainEditingFab.isVisible = !loading
}
}
}
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 8d8b8a6b1..09a0e7aa0 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
@@ -31,7 +31,6 @@
import androidx.annotation.Nullable;
import androidx.preference.PreferenceManager;
-import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
import com.owncloud.android.lib.common.utils.Log_OC;
@@ -82,8 +81,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
@Override
public void onPrepareOptionsMenu(@NonNull Menu menu) {
super.onPrepareOptionsMenu(menu);
- menu.findItem(R.id.menu_edit).setVisible(false);
- menu.findItem(R.id.menu_preview).setVisible(true);
}
@Override
@@ -114,16 +111,6 @@ protected FloatingActionButton getSearchPrevButton() {
return binding.searchPrev;
}
- @Override
- protected @NonNull ExtendedFloatingActionButton getDirectEditingButton() {
- return binding.directEditing;
- }
-
- protected ExtendedFloatingActionButton getNormalEditButton() {
- // the edit fragment does not have a button
- return null;
- }
-
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
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 b982baca9..3063b2720 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
@@ -29,7 +29,6 @@
import androidx.preference.PreferenceManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener;
-import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.nextcloud.android.sso.helper.SingleAccountHelper;
import com.owncloud.android.lib.common.utils.Log_OC;
@@ -57,12 +56,6 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O
@Override
public void onPrepareOptionsMenu(@NonNull Menu menu) {
super.onPrepareOptionsMenu(menu);
- menu.findItem(R.id.menu_edit).setVisible(true);
- if(getNormalEditButton().getVisibility() == View.VISIBLE) {
- menu.findItem(R.id.menu_edit).setVisible(false);
- }
-
- menu.findItem(R.id.menu_preview).setVisible(false);
}
@Override
@@ -91,16 +84,6 @@ protected FloatingActionButton getSearchPrevButton() {
return binding.searchPrev;
}
- @Override
- protected @NonNull ExtendedFloatingActionButton getDirectEditingButton() {
- return binding.directEditing;
- }
-
- @Override
- protected ExtendedFloatingActionButton getNormalEditButton() {
- return binding.edit;
- }
-
@Override
protected Layout getLayout() {
binding.singleNoteContent.onPreDraw();
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
index 503fbc9d2..e638ce6a8 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
@@ -23,7 +23,6 @@
import androidx.core.content.ContextCompat;
import androidx.preference.PreferenceManager;
-import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
@@ -35,7 +34,6 @@
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.persistence.entity.Account;
-import it.niedermann.owncloud.notes.shared.util.ExtendedFabUtil;
public abstract class SearchableBaseNoteFragment extends BaseNoteFragment {
@@ -50,7 +48,6 @@ public abstract class SearchableBaseNoteFragment extends BaseNoteFragment {
private static final int delay = 50; // If the search string does not change after $delay ms, then the search task starts.
private static final int shortStringDelay = 200; // A longer delay for short search strings.
private static final int shortStringSize = 3; // The maximum length of a short search string.
- private boolean directEditRemotelyAvailable = false; // avoid using this directly, instead use: isDirectEditEnabled()
@ColorInt
private int color;
@@ -75,62 +72,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
@Override
protected void onScroll(int scrollY, int oldScrollY) {
super.onScroll(scrollY, oldScrollY);
- if (isDirectEditEnabled()) {
- // only show FAB if search is not active
- if (getSearchNextButton() == null || getSearchNextButton().getVisibility() != View.VISIBLE) {
- final ExtendedFloatingActionButton directFab = getDirectEditingButton();
- ExtendedFabUtil.toggleVisibilityOnScroll(directFab, scrollY, oldScrollY);
- }
- }
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- checkDirectEditingAvailable();
- if (isDirectEditEnabled()) {
- ExtendedFloatingActionButton edit = getNormalEditButton();
- if (edit != null) edit.setVisibility(View.GONE);
- final ExtendedFloatingActionButton directEditingButton = getDirectEditingButton();
- directEditingButton.setExtended(false);
- directEditingButton.setVisibility(View.VISIBLE);
- ExtendedFabUtil.toggleExtendedOnLongClick(directEditingButton);
- directEditingButton.setOnClickListener(v -> {
- if (listener != null) {
- listener.changeMode(NoteFragmentListener.Mode.DIRECT_EDIT, false);
- }
- });
- } else {
- getDirectEditingButton().setVisibility(View.GONE);
- ExtendedFloatingActionButton edit = getNormalEditButton();
- if(edit!=null) {
- edit.setVisibility(View.VISIBLE);
- edit.setOnClickListener(v -> {
- if (listener != null) {
- listener.changeMode(NoteFragmentListener.Mode.EDIT, true);
- }
- });
- }
- }
- }
-
- private void checkDirectEditingAvailable() {
- try {
- final SingleSignOnAccount ssoAccount = SingleAccountHelper.getCurrentSingleSignOnAccount(requireContext());
- final Account localAccount = repo.getAccountByName(ssoAccount.name);
- directEditRemotelyAvailable = localAccount != null && localAccount.isDirectEditingAvailable();
- } catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
- Log.w(TAG, "checkDirectEditingAvailable: ", e);
- directEditRemotelyAvailable = false;
- }
- }
-
- protected boolean isDirectEditEnabled() {
- if (!directEditRemotelyAvailable) {
- return false;
- }
- final var sp = PreferenceManager.getDefaultSharedPreferences(requireContext().getApplicationContext());
- return sp.getBoolean(getString(R.string.pref_key_enable_direct_edit), true);
}
@Override
@@ -163,11 +109,17 @@ public void onGlobalLayout() {
colorWithText("", null, color);
searchQuery = "";
hideSearchFabs();
+ if (listener != null) {
+ listener.onSearchActive(false);
+ }
} else {
jumpToOccurrence();
colorWithText(searchQuery, null, color);
occurrenceCount = countOccurrences(getContent(), searchQuery);
showSearchFabs();
+ if (listener != null) {
+ listener.onSearchActive(true);
+ }
}
oldVisibility = currentVisibility;
@@ -278,13 +230,7 @@ public void onSaveInstanceState(@NonNull Bundle outState) {
protected abstract FloatingActionButton getSearchPrevButton();
- @NonNull
- protected abstract ExtendedFloatingActionButton getDirectEditingButton();
-
- protected abstract ExtendedFloatingActionButton getNormalEditButton();
-
private void showSearchFabs() {
- ExtendedFabUtil.setExtendedFabVisibility(getDirectEditingButton(), false);
final var next = getSearchNextButton();
final var prev = getSearchPrevButton();
if (prev != null) {
@@ -376,10 +322,5 @@ public void applyBrand(int color) {
final var util = BrandingUtil.of(color, requireContext());
util.material.themeFAB(getSearchNextButton());
util.material.themeFAB(getSearchPrevButton());
- util.material.themeExtendedFAB(getDirectEditingButton());
- var editFab = getNormalEditButton();
- if(editFab != null) {
- util.material.themeExtendedFAB(editFab);
- }
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ExtendedFabUtil.kt b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ExtendedFabUtil.kt
index 895443fc6..a9d5702c1 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ExtendedFabUtil.kt
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/ExtendedFabUtil.kt
@@ -9,8 +9,8 @@ package it.niedermann.owncloud.notes.shared.util
import android.view.View
import android.view.animation.Animation
import android.view.animation.AnimationUtils
-import com.google.android.material.R
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
+import com.google.android.material.floatingactionbutton.FloatingActionButton
object ExtendedFabUtil {
@JvmStatic
@@ -28,7 +28,7 @@ object ExtendedFabUtil {
val animation =
AnimationUtils.loadAnimation(
extendedFab.context,
- R.anim.design_bottom_sheet_slide_out,
+ com.google.android.material.R.anim.design_bottom_sheet_slide_out,
)
animation.setAnimationListener(
object : Animation.AnimationListener {
@@ -72,4 +72,18 @@ object ExtendedFabUtil {
setExtendedFabVisibility(extendedFab, true)
}
}
+
+ @JvmStatic
+ fun toggleVisibilityOnScroll(
+ fab: FloatingActionButton,
+ scrollY: Int,
+ oldScrollY: Int,
+ ) {
+ @Suppress("ConvertTwoComparisonsToRangeCheck")
+ if (oldScrollY > 0 && scrollY > oldScrollY && fab.isShown) {
+ fab.hide()
+ } else if (scrollY < oldScrollY && !fab.isShown) {
+ fab.show()
+ }
+ }
}
diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml
index 6e1f48378..47a0e2333 100644
--- a/app/src/main/res/layout/activity_edit.xml
+++ b/app/src/main/res/layout/activity_edit.xml
@@ -5,23 +5,66 @@
~ SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors
~ SPDX-License-Identifier: GPL-3.0-or-later
-->
-
+ android:layout_height="match_parent">
-
+
+
+
+
+
+
+
+
+ android:layout_gravity="bottom|end"
+ android:layout_margin="@dimen/spacer_2x"
+ android:contentDescription="@string/noteMode_rich_edit"
+ android:src="@drawable/ic_rich_editing_grey600_24dp"
+ android:visibility="gone"
+ tools:visibility="visible" />
-
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/layout/fragment_note_direct_edit.xml b/app/src/main/res/layout/fragment_note_direct_edit.xml
index 9ea531c40..6a462804c 100644
--- a/app/src/main/res/layout/fragment_note_direct_edit.xml
+++ b/app/src/main/res/layout/fragment_note_direct_edit.xml
@@ -28,22 +28,4 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
-
-
diff --git a/app/src/main/res/layout/fragment_note_edit.xml b/app/src/main/res/layout/fragment_note_edit.xml
index 4de3e67b8..c2f9545ac 100644
--- a/app/src/main/res/layout/fragment_note_edit.xml
+++ b/app/src/main/res/layout/fragment_note_edit.xml
@@ -69,19 +69,4 @@
app:backgroundTint="@color/defaultBrand"
app:srcCompat="@drawable/ic_keyboard_arrow_down_white_24dp"
tools:visibility="visible" />
-
-
diff --git a/app/src/main/res/layout/fragment_note_preview.xml b/app/src/main/res/layout/fragment_note_preview.xml
index 82aeadfc0..7b54bd5a0 100644
--- a/app/src/main/res/layout/fragment_note_preview.xml
+++ b/app/src/main/res/layout/fragment_note_preview.xml
@@ -73,34 +73,4 @@
app:backgroundTint="@color/defaultBrand"
app:srcCompat="@drawable/ic_keyboard_arrow_down_white_24dp"
tools:visibility="visible" />
-
-
-
-
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 6a54a76aa..3409574fc 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -161,4 +161,5 @@
- textStart
- 0dp
+