Merge "Fix focus issues on RV." into nyc-dev

This commit is contained in:
Ben Kwa
2016-02-18 00:19:20 +00:00
committed by Android (Google) Code Review
2 changed files with 7 additions and 5 deletions

View File

@@ -199,11 +199,6 @@ public class DirectoryFragment extends Fragment implements DocumentsAdapter.Envi
mRecView.setItemAnimator(new DirectoryItemAnimator(getActivity()));
// Make the RecyclerView unfocusable. This is needed in order for the focus search code in
// FocusManager to work correctly. Setting android:focusable=false in the layout xml doesn't
// work, for some reason.
mRecView.setFocusable(false);
// TODO: Add a divider between views (which might use RecyclerView.ItemDecoration).
if (DEBUG_ENABLE_DND) {
setupDragAndDropOnDirectoryView(mRecView);

View File

@@ -158,7 +158,14 @@ class FocusManager implements View.OnFocusChangeListener {
}
if (searchDir != -1) {
// Focus search behaves badly if the parent RecyclerView is focused. However, focusable
// shouldn't be unset on RecyclerView, otherwise focus isn't properly restored after
// events that cause a UI rebuild (like rotating the device). Compromise: turn focusable
// off while performing the focus search.
// TODO: Revisit this when RV focus issues are resolved.
mView.setFocusable(false);
View targetView = view.focusSearch(searchDir);
mView.setFocusable(true);
// TargetView can be null, for example, if the user pressed <down> at the bottom
// of the list.
if (targetView != null) {