Jason пре 5 година
родитељ
комит
d8bba83f98
1 измењених фајлова са 31 додато и 0 уклоњено
  1. 31 0
      GridLayoutManager解决焦点跑飞.md

+ 31 - 0
GridLayoutManager解决焦点跑飞.md

@@ -0,0 +1,31 @@
+```java
+public class FocusedLayoutManager extends GridLayoutManager {
+    public FocusedLayoutManager(Context context, int spanCount) {
+        super(context, spanCount);
+    }
+
+    public View onInterceptFocusSearch(View focused, int direction) {
+
+        int currentPosition = getPosition(getFocusedChild());//这里要用这个方法
+        int count = getItemCount();
+        int lastVisiblePosition = findLastVisibleItemPosition();
+        switch (direction) {
+            case View.FOCUS_RIGHT:
+                currentPosition++;
+                break;
+            case View.FOCUS_LEFT:
+                currentPosition--;
+                break;
+        }
+        if (currentPosition < 0 || currentPosition > count) {
+            return focused;
+        } else {
+            if (currentPosition > lastVisiblePosition) {
+                scrollToPosition(currentPosition);
+            }
+        }
+        return super.onInterceptFocusSearch(focused, direction);
+    }
+}
+```
+