Merge "Fix TB can't visited all items in category list" into ub-launcher3-master
diff --git a/src/com/android/wallpaper/picker/CategoryFragment.java b/src/com/android/wallpaper/picker/CategoryFragment.java
index 9abeecf..182cb17 100755
--- a/src/com/android/wallpaper/picker/CategoryFragment.java
+++ b/src/com/android/wallpaper/picker/CategoryFragment.java
@@ -413,6 +413,18 @@
}
@Override
+ public void expandBottomSheet() {
+ if (mBottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
+ mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+ }
+
+ @Override
+ public int getBottomSheetState() {
+ return mBottomSheetBehavior.getState();
+ }
+
+ @Override
public void updateThumbnail(WallpaperInfo wallpaperInfo) {
new android.os.Handler().post(() -> {
// A config change may have destroyed the activity since the refresh started, so check
diff --git a/src/com/android/wallpaper/picker/CategorySelectorFragment.java b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
index 92ee944..ff0855d 100644
--- a/src/com/android/wallpaper/picker/CategorySelectorFragment.java
+++ b/src/com/android/wallpaper/picker/CategorySelectorFragment.java
@@ -28,6 +28,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -39,6 +40,7 @@
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate;
import com.android.wallpaper.R;
import com.android.wallpaper.asset.Asset;
@@ -49,6 +51,7 @@
import com.android.wallpaper.util.SizeCalculator;
import com.bumptech.glide.Glide;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
import java.util.ArrayList;
import java.util.List;
@@ -86,6 +89,16 @@
* Sets the title in the toolbar.
*/
void setToolbarTitle(CharSequence title);
+
+ /**
+ * Expand the bottom sheet if it's not expanded.
+ */
+ void expandBottomSheet();
+
+ /**
+ * Get bottom sheet current state.
+ */
+ int getBottomSheetState();
}
private RecyclerView mImageGrid;
@@ -104,7 +117,6 @@
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_category_selector, container,
/* attachToRoot= */ false);
-
mImageGrid = view.findViewById(R.id.category_grid);
mImageGrid.addItemDecoration(new GridPaddingDecoration(
getResources().getDimensionPixelSize(R.dimen.grid_padding)));
@@ -120,6 +132,8 @@
windowInsets.getSystemWindowInsetBottom());
return windowInsets;
});
+ mImageGrid.setAccessibilityDelegateCompat(
+ new CategoryRecyclerViewAccessibilityDelegate(mImageGrid));
getCategorySelectorFragmentHost().setToolbarTitle(getText(R.string.wallpaper_title));
return view;
@@ -451,4 +465,29 @@
return 1;
}
}
+
+ private class CategoryRecyclerViewAccessibilityDelegate
+ extends RecyclerViewAccessibilityDelegate {
+
+ CategoryRecyclerViewAccessibilityDelegate(@NonNull RecyclerView recyclerView) {
+ super(recyclerView);
+ }
+
+ @Override
+ public boolean onRequestSendAccessibilityEvent(
+ ViewGroup host, View child, AccessibilityEvent event) {
+ int itemPos;
+ if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
+ itemPos = mImageGrid.getChildLayoutPosition(child);
+
+ // Expand the bottom sheet when TB travel to second column.
+ if (getCategorySelectorFragmentHost() != null
+ && (getCategorySelectorFragmentHost()).getBottomSheetState()
+ != BottomSheetBehavior.STATE_EXPANDED && itemPos >= getNumColumns()) {
+ (getCategorySelectorFragmentHost()).expandBottomSheet();
+ }
+ }
+ return super.onRequestSendAccessibilityEvent(host, child, event);
+ }
+ }
}