Update FocusFinder
Don't return the current view when finding the next or previous view. Bug: 158492287 Test: atest cts/tests/tests/view/src/android/view/cts/FocusFinderTest.java atest frameworks/base/core/tests/coretests/src/android/view/FocusFinderTest.java Change-Id: Ib5c1854d1a13b9469ca55dfbf0be61bead47e29e
This commit is contained in:
@@ -311,6 +311,9 @@ public class FocusFinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final int count = focusables.size();
|
final int count = focusables.size();
|
||||||
|
if (count < 2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case View.FOCUS_FORWARD:
|
case View.FOCUS_FORWARD:
|
||||||
return getNextFocusable(focused, focusables, count);
|
return getNextFocusable(focused, focusables, count);
|
||||||
@@ -373,29 +376,29 @@ public class FocusFinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static View getNextFocusable(View focused, ArrayList<View> focusables, int count) {
|
private static View getNextFocusable(View focused, ArrayList<View> focusables, int count) {
|
||||||
|
if (count < 2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (focused != null) {
|
if (focused != null) {
|
||||||
int position = focusables.lastIndexOf(focused);
|
int position = focusables.lastIndexOf(focused);
|
||||||
if (position >= 0 && position + 1 < count) {
|
if (position >= 0 && position + 1 < count) {
|
||||||
return focusables.get(position + 1);
|
return focusables.get(position + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!focusables.isEmpty()) {
|
return focusables.get(0);
|
||||||
return focusables.get(0);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static View getPreviousFocusable(View focused, ArrayList<View> focusables, int count) {
|
private static View getPreviousFocusable(View focused, ArrayList<View> focusables, int count) {
|
||||||
|
if (count < 2) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (focused != null) {
|
if (focused != null) {
|
||||||
int position = focusables.indexOf(focused);
|
int position = focusables.indexOf(focused);
|
||||||
if (position > 0) {
|
if (position > 0) {
|
||||||
return focusables.get(position - 1);
|
return focusables.get(position - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!focusables.isEmpty()) {
|
return focusables.get(count - 1);
|
||||||
return focusables.get(count - 1);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static View getNextKeyboardNavigationCluster(
|
private static View getNextKeyboardNavigationCluster(
|
||||||
|
|||||||
Reference in New Issue
Block a user