Hide toolbar improvements

pull/210/head
M66B 2 years ago
parent ecd7fc1e47
commit 20cbb6857f

@ -219,7 +219,22 @@ public class FragmentFolders extends FragmentBase {
}); });
rvFolder.setHasFixedSize(false); rvFolder.setHasFixedSize(false);
LinearLayoutManager llm = new LinearLayoutManager(getContext()); LinearLayoutManager llm = new LinearLayoutManager(getContext()) {
@Override
public void onLayoutCompleted(RecyclerView.State state) {
super.onLayoutCompleted(state);
if (!isActionBarShown())
try {
int range = computeVerticalScrollRange(state);
int extend = computeVerticalScrollExtent(state);
boolean canScrollVertical = (range > extend);
if (!canScrollVertical) // anymore
showActionBar(true);
} catch (Throwable ex) {
Log.e(ex);
}
}
};
rvFolder.setLayoutManager(llm); rvFolder.setLayoutManager(llm);
if (!cards && dividers) { if (!cards && dividers) {
@ -315,16 +330,17 @@ public class FragmentFolders extends FragmentBase {
@Override @Override
public void onScrolled(@NonNull RecyclerView rv, int dx, int dy) { public void onScrolled(@NonNull RecyclerView rv, int dx, int dy) {
if (hide_toolbar && dy != 0) { if (hide_toolbar && dy != 0)
int range = rv.computeVerticalScrollRange(); try {
int extend = rv.computeVerticalScrollExtent(); show = (dy < 0 || rv.computeVerticalScrollOffset() == 0);
boolean canScrollVertical = (range > extend); } catch (Throwable ex) {
show = (!canScrollVertical || (rv.computeVerticalScrollOffset() == 0 || dy < 0)); Log.e(ex);
} show = true;
}
} }
@Override @Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { public void onScrollStateChanged(@NonNull RecyclerView rv, int newState) {
if (hide_toolbar && newState != RecyclerView.SCROLL_STATE_DRAGGING) if (hide_toolbar && newState != RecyclerView.SCROLL_STATE_DRAGGING)
showActionBar(show); showActionBar(show);
} }

@ -1139,11 +1139,7 @@ public class FragmentMessages extends FragmentBase
if (hide_toolbar && dy != 0) if (hide_toolbar && dy != 0)
try { try {
int range = rv.computeVerticalScrollRange(); show = (dy < 0 || rv.computeVerticalScrollOffset() == 0);
int extend = rv.computeVerticalScrollExtent();
boolean canScrollVertical = (range > extend);
show = (!canScrollVertical ||
(dy < 0 || rv.computeVerticalScrollOffset() == 0));
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(ex); Log.e(ex);
show = true; show = true;
@ -1151,7 +1147,7 @@ public class FragmentMessages extends FragmentBase
} }
@Override @Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { public void onScrollStateChanged(@NonNull RecyclerView rv, int newState) {
if (hide_toolbar && newState != RecyclerView.SCROLL_STATE_DRAGGING) if (hide_toolbar && newState != RecyclerView.SCROLL_STATE_DRAGGING)
showActionBar(show); showActionBar(show);
} }

Loading…
Cancel
Save