diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt index 0e52baff6b9..dddcec5163f 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt @@ -18,6 +18,7 @@ import android.widget.Toast import androidx.activity.ComponentActivity import androidx.appcompat.app.AlertDialog import androidx.core.net.toUri +import androidx.core.view.doOnLayout import androidx.core.view.isGone import androidx.core.view.isInvisible import androidx.core.view.isVisible @@ -771,9 +772,12 @@ class HomeFragment : BaseFragment( } } super.onScrolled(recyclerView, dx, dy) + updateTvRailFocus() } }) + homeMasterRecycler.doOnLayout { updateTvRailFocus() } + } //Load value for toggling Random button. Hide at startup @@ -949,6 +953,24 @@ class HomeFragment : BaseFragment( }*/ } + private fun updateTvRailFocus() { + if (!isLayout(TV or EMULATOR)) return + val target = + if (binding?.homeMasterRecycler?.computeVerticalScrollOffset() == 0) R.id.home_change_api + else View.NO_ID + val rail = activity?.findViewById(R.id.nav_rail_view) ?: return + rail.nextFocusRightId = target + for (focusView in arrayOf( + R.id.navigation_downloads, + R.id.navigation_home, + R.id.navigation_search, + R.id.navigation_library, + R.id.navigation_settings, + )) { + rail.findViewById(focusView)?.nextFocusRightId = target + } + } + private fun handleTvBackPress(helper: BackPressedCallbackHelper.CallbackHelper) { // Only apply custom behavior on TV interface if (!isLayout(TV)) {