diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java index 6ae65cb6d8f67..c64ec6f11b932 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java @@ -16,6 +16,7 @@ package com.android.systemui.accessibility.accessibilitymenu.view; +import android.content.Context; import android.graphics.Rect; import android.view.LayoutInflater; import android.view.TouchDelegate; @@ -47,10 +48,11 @@ public class A11yMenuAdapter extends BaseAdapter { private final ShortcutDrawableUtils mShortcutDrawableUtils; public A11yMenuAdapter( - AccessibilityMenuService service, List shortcutDataList) { + AccessibilityMenuService service, + Context displayContext, List shortcutDataList) { this.mService = service; this.mShortcutDataList = shortcutDataList; - mInflater = LayoutInflater.from(service); + mInflater = LayoutInflater.from(displayContext); mShortcutDrawableUtils = new ShortcutDrawableUtils(service); @@ -75,7 +77,9 @@ public class A11yMenuAdapter extends BaseAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { - convertView = mInflater.inflate(R.layout.grid_item, null); + if (convertView == null) { + convertView = mInflater.inflate(R.layout.grid_item, parent, false); + } A11yMenuShortcut shortcutItem = (A11yMenuShortcut) getItem(position); // Sets shortcut icon and label resource. diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuOverlayLayout.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuOverlayLayout.java index 5b7bbe80f9ad1..edd6a48607cce 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuOverlayLayout.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuOverlayLayout.java @@ -17,11 +17,13 @@ package com.android.systemui.accessibility.accessibilitymenu.view; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; import static java.lang.Math.max; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; +import android.content.Context; import android.content.res.Configuration; import android.graphics.Insets; import android.graphics.PixelFormat; @@ -135,15 +137,13 @@ public class A11yMenuOverlayLayout { initLayoutParams(); } - final Display display = mService.getSystemService( - DisplayManager.class).getDisplay(DEFAULT_DISPLAY); - - mLayout = new FrameLayout( - mService.createDisplayContext(display).createWindowContext( - WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY, null)); + final Display display = mDisplayManager.getDisplay(DEFAULT_DISPLAY); + final Context context = mService.createDisplayContext(display).createWindowContext( + TYPE_ACCESSIBILITY_OVERLAY, null); + mLayout = new FrameLayout(context); updateLayoutPosition(); - inflateLayoutAndSetOnTouchListener(mLayout); - mA11yMenuViewPager = new A11yMenuViewPager(mService); + inflateLayoutAndSetOnTouchListener(mLayout, context); + mA11yMenuViewPager = new A11yMenuViewPager(mService, context); mA11yMenuViewPager.configureViewPagerAndFooter(mLayout, createShortcutList(), pageIndex); mWindowManager.addView(mLayout, mLayoutParameter); mLayout.setVisibility(lastVisibilityState); @@ -169,8 +169,8 @@ public class A11yMenuOverlayLayout { mLayoutParameter.setTitle(mService.getString(R.string.accessibility_menu_service_name)); } - private void inflateLayoutAndSetOnTouchListener(ViewGroup view) { - LayoutInflater inflater = LayoutInflater.from(mService); + private void inflateLayoutAndSetOnTouchListener(ViewGroup view, Context displayContext) { + LayoutInflater inflater = LayoutInflater.from(displayContext); inflater.inflate(R.layout.paged_menu, view); view.setOnTouchListener(mService); } diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuViewPager.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuViewPager.java index 0a349e5322c25..b969017f7531d 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuViewPager.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuViewPager.java @@ -147,8 +147,12 @@ public class A11yMenuViewPager { /** The container layout for a11y menu. */ private ViewGroup mA11yMenuLayout; - public A11yMenuViewPager(AccessibilityMenuService service) { + /** Display context for inflating views. */ + private Context mDisplayContext; + + public A11yMenuViewPager(AccessibilityMenuService service, Context displayContext) { this.mService = service; + this.mDisplayContext = displayContext; } /** @@ -213,10 +217,11 @@ public class A11yMenuViewPager { } private void addGridPage(List shortcutDataListInPage) { - LayoutInflater inflater = LayoutInflater.from(mService); + LayoutInflater inflater = LayoutInflater.from(mDisplayContext); View view = inflater.inflate(R.layout.grid_view, null); GridView gridView = view.findViewById(R.id.gridview); - A11yMenuAdapter adapter = new A11yMenuAdapter(mService, shortcutDataListInPage); + A11yMenuAdapter adapter = new A11yMenuAdapter( + mService, mDisplayContext, shortcutDataListInPage); gridView.setNumColumns(GridViewParams.getGridColumnCount(mService)); gridView.setAdapter(adapter); mGridPageList.add(gridView);