mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-18 04:37:30 +00:00
Scroll feed to top when bottom feed tab clicked
This commit is contained in:
parent
25b2b504cb
commit
e530a336a7
@ -29,6 +29,7 @@ import androidx.appcompat.widget.SearchView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.core.app.NotificationManagerCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.navigation.NavBackStackEntry;
|
||||
@ -56,6 +57,7 @@ import awais.instagrabber.asyncs.SuggestionsFetcher;
|
||||
import awais.instagrabber.customviews.helpers.CustomHideBottomViewOnScrollBehavior;
|
||||
import awais.instagrabber.databinding.ActivityMainBinding;
|
||||
import awais.instagrabber.fragments.PostViewV2Fragment;
|
||||
import awais.instagrabber.fragments.main.FeedFragment;
|
||||
import awais.instagrabber.fragments.settings.MorePreferencesFragmentDirections;
|
||||
import awais.instagrabber.interfaces.FetchListener;
|
||||
import awais.instagrabber.models.IntentModel;
|
||||
@ -429,6 +431,16 @@ public class MainActivity extends BaseLanguageActivity implements FragmentManage
|
||||
firstFragmentGraphIndex);
|
||||
navControllerLiveData.observe(this, navController -> setupNavigation(binding.toolbar, navController));
|
||||
currentNavControllerLiveData = navControllerLiveData;
|
||||
binding.bottomNavView.setOnNavigationItemReselectedListener(item -> {
|
||||
// Log.d(TAG, "setupBottomNavigationBar: item: " + item);
|
||||
final Fragment navHostFragment = getSupportFragmentManager().findFragmentById(R.id.main_nav_host);
|
||||
if (navHostFragment != null) {
|
||||
final Fragment fragment = navHostFragment.getChildFragmentManager().getPrimaryNavigationFragment();
|
||||
if (fragment instanceof FeedFragment) {
|
||||
((FeedFragment) fragment).scrollToTop();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setBottomNavSelectedItem(final int navId) {
|
||||
|
@ -9,6 +9,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.lifecycle.ViewModelStoreOwner;
|
||||
import androidx.recyclerview.widget.LinearSmoothScroller;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||
import androidx.transition.ChangeBounds;
|
||||
@ -80,6 +81,13 @@ public class PostsRecyclerView extends RecyclerView {
|
||||
}
|
||||
};
|
||||
|
||||
private final RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(getContext()) {
|
||||
@Override
|
||||
protected int getVerticalSnapPreference() {
|
||||
return LinearSmoothScroller.SNAP_TO_START;
|
||||
}
|
||||
};
|
||||
|
||||
public PostsRecyclerView(@NonNull final Context context) {
|
||||
super(context);
|
||||
}
|
||||
@ -313,4 +321,10 @@ public class PostsRecyclerView extends RecyclerView {
|
||||
super.onDetachedFromWindow();
|
||||
lifeCycleOwner = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void smoothScrollToPosition(final int position) {
|
||||
smoothScroller.setTargetPosition(position);
|
||||
layoutManager.startSmoothScroll(smoothScroller);
|
||||
}
|
||||
}
|
||||
|
@ -380,4 +380,9 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
||||
preferences -> new Handler().postDelayed(() -> binding.feedRecyclerView.setLayoutPreferences(preferences), 200));
|
||||
fragment.show(getChildFragmentManager(), "posts_layout_preferences");
|
||||
}
|
||||
|
||||
public void scrollToTop() {
|
||||
binding.feedRecyclerView.smoothScrollToPosition(0);
|
||||
binding.storiesContainer.setExpanded(true);
|
||||
}
|
||||
}
|
||||
|
@ -759,7 +759,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
||||
@Override
|
||||
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
||||
Log.d(TAG, "Unfollow success: " + result);
|
||||
// Log.d(TAG, "Unfollow success: " + result);
|
||||
onRefresh();
|
||||
}
|
||||
|
||||
@ -776,7 +776,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
||||
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
||||
@Override
|
||||
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
||||
Log.d(TAG, "Follow success: " + result);
|
||||
// Log.d(TAG, "Follow success: " + result);
|
||||
onRefresh();
|
||||
}
|
||||
|
||||
|
@ -19,9 +19,11 @@ import java.util.List;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
|
||||
/**
|
||||
* This is a Java rewrite of <a href="https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt">NavigationExtensions</a>
|
||||
* from architecture-components-samples. Some modifications have been done, check git history.
|
||||
*/
|
||||
public class NavigationExtensions {
|
||||
// private static final String TAG = "NavigationExtensions";
|
||||
|
||||
@NonNull
|
||||
public static LiveData<NavController> setupWithNavController(@NonNull final BottomNavigationView bottomNavigationView,
|
||||
@NonNull List<Integer> navGraphIds,
|
||||
|
Loading…
Reference in New Issue
Block a user