Theme fixit for Car Sys UI
Notifications to use recyclerview in CarSysUI
SysUI UserSwitcher changes for PLV -> RecyclerView
Car SysUI Volume PLV -> RecyclerView
Bug: 128545260
Test: manual
Change-Id: Ic618b85d6836cfc9e4bb9b40c9ba3c0e0a96af76
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
index fb2b57b..5760378 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/UserGridRecyclerView.java
@@ -28,6 +28,7 @@
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.graphics.Rect;
import android.os.AsyncTask;
import android.util.AttributeSet;
import android.view.LayoutInflater;
@@ -36,9 +37,9 @@
import android.widget.ImageView;
import android.widget.TextView;
-import androidx.car.widget.PagedListView;
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
+import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.util.UserIcons;
@@ -52,7 +53,7 @@
* Displays a GridLayout with icons for the users in the system to allow switching between users.
* One of the uses of this is for the lock screen in auto.
*/
-public class UserGridRecyclerView extends PagedListView implements
+public class UserGridRecyclerView extends RecyclerView implements
CarUserManagerHelper.OnUsersUpdateListener {
private UserSelectionListener mUserSelectionListener;
private UserAdapter mAdapter;
@@ -63,6 +64,9 @@
super(context, attrs);
mContext = context;
mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+
+ addItemDecoration(new ItemSpacingDecoration(context.getResources().getDimensionPixelSize(
+ R.dimen.car_user_switcher_vertical_spacing_between_users)));
}
/**
@@ -391,4 +395,31 @@
void onUserSelected(UserRecord record);
}
+
+ /**
+ * A {@link RecyclerView.ItemDecoration} that will add spacing between each item in the
+ * RecyclerView that it is added to.
+ */
+ private static class ItemSpacingDecoration extends RecyclerView.ItemDecoration {
+ private int mItemSpacing;
+
+ private ItemSpacingDecoration(int itemSpacing) {
+ mItemSpacing = itemSpacing;
+ }
+
+ @Override
+ public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
+ RecyclerView.State state) {
+ super.getItemOffsets(outRect, view, parent, state);
+ int position = parent.getChildAdapterPosition(view);
+
+ // Skip offset for last item except for GridLayoutManager.
+ if (position == state.getItemCount() - 1
+ && !(parent.getLayoutManager() instanceof GridLayoutManager)) {
+ return;
+ }
+
+ outRect.bottom = mItemSpacing;
+ }
+ }
}