Fix scrolling in main screen grid

GridLayoutManager is buggy - https://issuetracker.google.com/issues/37067220:
it randomly loses or incorrectly assigns focus when being scrolled via
direction-based navigation. This commit reimplements onFocusSearchFailed()
on top of scrollBy() to work around that problem.

Ordinary touch-based navigation should not be affected.
This commit is contained in:
Alexander 2019-09-20 16:10:57 +07:00 committed by Alexander--
parent 9429fbfa65
commit b1aa3b018b
7 changed files with 140 additions and 5 deletions

View file

@ -35,6 +35,7 @@ import org.schabi.newpipe.util.OnClickGesture;
import org.schabi.newpipe.util.StateSaver;
import org.schabi.newpipe.util.StreamDialogEntry;
import org.schabi.newpipe.views.SuperScrollLayoutManager;
import org.schabi.newpipe.views.FixedGridLayoutManager;
import java.util.List;
import java.util.Queue;
@ -156,7 +157,7 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> implem
int width = resources.getDimensionPixelSize(R.dimen.video_item_grid_thumbnail_image_width);
width += (24 * resources.getDisplayMetrics().density);
final int spanCount = (int) Math.floor(resources.getDisplayMetrics().widthPixels / (double)width);
final GridLayoutManager lm = new GridLayoutManager(activity, spanCount);
final GridLayoutManager lm = new FixedGridLayoutManager(activity, spanCount);
lm.setSpanSizeLookup(infoListAdapter.getSpanSizeLookup(spanCount));
return lm;
}