diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java index e70c567691a3c66e3ed2e8ae313c9c564a5185f6..1b8296dc4918f09b176d23b428362219956e9474 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/fragment/ChatFragment.java @@ -88,6 +88,8 @@ public class ChatFragment extends BoundFragment { messageAdapter = new MessageAdapter(getActivity(), context, new AutoScroller(messages)); messages.setAdapter(messageAdapter); + scrollDown.hide(); + listener = new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { @@ -106,12 +108,19 @@ public class ChatFragment extends BoundFragment { int scrollOffsetFromBottom = recyclerView.computeVerticalScrollRange() - recyclerView.computeVerticalScrollOffset() - recyclerViewMeasuredHeight; boolean isMoreThanOneScreenFromBottom = scrollOffsetFromBottom > recyclerViewMeasuredHeight; boolean smartVisibility = scrollDown.getVisibility() == View.VISIBLE || isMoreThanOneScreenFromBottom; - scrollDown.setVisibility((canScrollDown && isScrollingDown && smartVisibility) ? View.VISIBLE : View.GONE); + setScrollDownVisibility(canScrollDown && isScrollingDown && smartVisibility); + } + + private void setScrollDownVisibility(boolean visible) { + if (visible) + scrollDown.show(); + else + scrollDown.hide(); } }; messages.addOnScrollListener(listener); - scrollDown.setOnClickListener(view1 -> messages.scrollToPosition(0)); + scrollDown.setOnClickListener(view1 -> messages.smoothScrollToPosition(0)); return view; } diff --git a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java b/app/src/main/java/de/kuschku/util/observables/AutoScroller.java index f93adf7aafeeafbab30e4d74b6f40a339acf80d6..75db1aaf551021d243fb6126cf2e3a24bf97f024 100644 --- a/app/src/main/java/de/kuschku/util/observables/AutoScroller.java +++ b/app/src/main/java/de/kuschku/util/observables/AutoScroller.java @@ -26,20 +26,18 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; public class AutoScroller { - private final RecyclerView recyclerView; private final LinearLayoutManager manager; public AutoScroller(@NonNull RecyclerView recyclerView) { - this(recyclerView, (LinearLayoutManager) recyclerView.getLayoutManager()); + this((LinearLayoutManager) recyclerView.getLayoutManager()); } - public AutoScroller(RecyclerView recyclerView, LinearLayoutManager manager) { - this.recyclerView = recyclerView; + public AutoScroller(LinearLayoutManager manager) { this.manager = manager; } public void notifyScroll() { if (manager.findFirstVisibleItemPosition() == 0) - manager.smoothScrollToPosition(recyclerView, null, 0); + manager.scrollToPosition(0); } } diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml index e1f899f015ca1faae71baf59c167342fa38c037f..40edd43e31a85192991d6da5c738c7f21cc7c98b 100644 --- a/app/src/main/res/layout/fragment_chat.xml +++ b/app/src/main/res/layout/fragment_chat.xml @@ -53,7 +53,6 @@ android:layout_marginEnd="12dp" android:layout_marginRight="12dp" android:tint="@color/colorFillDark" - android:visibility="gone" app:backgroundTint="#8A808080" app:elevation="0dip" app:fabSize="mini"