Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d76f33e authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "A11yMenu Layout fixes" into main

parents 91f155a9 4754e1be
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -3,8 +3,7 @@
    android:id="@+id/shortcutItem"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="@dimen/grid_item_padding"
    android:paddingBottom="@dimen/grid_item_padding"
    android:padding="@dimen/grid_item_padding"
    android:gravity="center">

  <ImageButton
+14 −20
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/row_width"
    android:layout_height="match_parent"
    android:id="@+id/coordinatorLayout"
    android:background="@drawable/view_background"
    >
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical">
    android:orientation="vertical"
    android:background="@drawable/view_background">

  <androidx.viewpager2.widget.ViewPager2
      android:id="@+id/view_pager"
      android:layout_width="match_parent"
        android:layout_height="wrap_content"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:paddingTop="@dimen/table_margin_top"
      android:paddingBottom="@dimen/a11ymenu_layout_margin"
        android:layout_gravity="center"
      android:gravity="center"
      />

  <include layout="@layout/footerlayout_switch_page"/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
+14 −2
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class A11yMenuFooter {
    private View mBottomListDivider;
    private final A11yMenuFooterCallBack mCallBack;
    private final ViewGroup mMenuLayout;
    private ViewGroup mFooterContainer;
    private int mFooterContainerBaseHeight = 0;
    private int mRightToLeftDirection = LAYOUT_DIRECTION_LTR;

    public A11yMenuFooter(ViewGroup menuLayout, A11yMenuFooterCallBack callBack) {
@@ -74,6 +76,15 @@ public class A11yMenuFooter {
                ? mPageRightBtn : mPageLeftBtn;
    }

    void adjustFooterToDensityScale(float densityScale) {
        mFooterContainer.getLayoutParams().height =
                (int) (mFooterContainerBaseHeight / densityScale);
    }

    int getHeight() {
        return mFooterContainer.getLayoutParams().height;
    }

    /** Sets right to left direction of footer. */
    public void updateRightToLeftDirection(Configuration configuration) {
        mRightToLeftDirection = TextUtils.getLayoutDirectionFromLocale(
@@ -85,8 +96,9 @@ public class A11yMenuFooter {
    }

    private void configureFooterLayout(ViewGroup menuLayout) {
        ViewGroup footerContainer = menuLayout.findViewById(R.id.footerlayout);
        footerContainer.setVisibility(View.VISIBLE);
        mFooterContainer = menuLayout.findViewById(R.id.footerlayout);
        mFooterContainer.setVisibility(View.VISIBLE);
        mFooterContainerBaseHeight = mFooterContainer.getLayoutParams().height;

        mPageLeftBtn = menuLayout.findViewById(R.id.menu_left_button);
        mPageRightBtn = menuLayout.findViewById(R.id.menu_right_button);
+16 −11
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.view.WindowManager;
import android.view.WindowMetrics;
import android.widget.GridView;

import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import com.android.systemui.accessibility.accessibilitymenu.AccessibilityMenuService;
@@ -163,7 +164,9 @@ public class A11yMenuViewPager {
        mA11yMenuShortcutList = shortcutDataList;
        initViewPager();
        initChildPage();
        if (mA11yMenuFooter == null) {
            mA11yMenuFooter = new A11yMenuFooter(a11yMenuLayout, mFooterCallbacks);
        }
        mA11yMenuFooter.updateRightToLeftDirection(
                a11yMenuLayout.getResources().getConfiguration());
        updateFooterState();
@@ -233,11 +236,17 @@ public class A11yMenuViewPager {
                                    return;
                                }

                                if (mGridPageList.isEmpty()) {
                                if (mViewPagerAdapter.getItemCount() == 0) {
                                    return;
                                }

                                GridView firstGridView = mGridPageList.get(0);
                                RecyclerView.ViewHolder viewHolder =
                                        ((RecyclerView) mViewPager.getChildAt(0))
                                                .findViewHolderForAdapterPosition(0);
                                if (viewHolder == null) {
                                    return;
                                }
                                GridView firstGridView = (GridView) viewHolder.itemView;
                                if (firstGridView == null
                                        || firstGridView.getChildAt(0) == null) {
                                    return;
@@ -280,10 +289,8 @@ public class A11yMenuViewPager {
            DisplayMetrics displayMetrics = mService.getResources().getDisplayMetrics();
            float densityScale = (float) displayMetrics.densityDpi
                    / DisplayMetrics.DENSITY_DEVICE_STABLE;
            View footerLayout = mA11yMenuLayout.findViewById(R.id.footerlayout);
            // Keeps footer window height unchanged no matter the density is changed.
            footerLayout.getLayoutParams().height =
                    (int) (footerLayout.getLayoutParams().height / densityScale);
            mA11yMenuFooter.adjustFooterToDensityScale(densityScale);
            // Adjust the view pager height for system bar and display cutout insets.
            WindowManager windowManager = mA11yMenuLayout.getContext()
                    .getSystemService(WindowManager.class);
@@ -292,20 +299,18 @@ public class A11yMenuViewPager {
                    WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout());
            viewPagerHeight =
                    windowMetric.getBounds().height()
                            - footerLayout.getLayoutParams().height
                            - mA11yMenuFooter.getHeight()
                            - windowInsets.bottom;
            // Sets vertical interval between grid items.
            int interval =
                    (viewPagerHeight - topMargin - defaultMargin
                            - (rowsInGridView * gridItemHeight))
                            / (rowsInGridView + 1);
            for (GridView gridView : mGridPageList) {
                gridView.setVerticalSpacing(interval);
            }
            mViewPagerAdapter.setVerticalSpacing(interval);

            // Sets padding to view pager.
            final int finalMarginTop = interval + topMargin;
            mViewPager.setPadding(defaultMargin, finalMarginTop, defaultMargin, defaultMargin);
            mViewPager.setPadding(0, finalMarginTop, 0, defaultMargin);
        }
        final ViewGroup.LayoutParams layoutParams = mViewPager.getLayoutParams();
        layoutParams.height = viewPagerHeight;
+9 −0
Original line number Diff line number Diff line
@@ -36,11 +36,19 @@ class ViewPagerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    /** List of shortcuts, split into sub lists per page */
    private List<List<A11yMenuShortcut>> mShortcutList;
    private final AccessibilityMenuService mService;
    private int mVerticalSpacing = 0;

    ViewPagerAdapter(AccessibilityMenuService service) {
        mService = service;
    }

    public void setVerticalSpacing(int spacing) {
        if (mVerticalSpacing != spacing) {
            mVerticalSpacing = spacing;
            notifyDataSetChanged();
        }
    }

    public void set(List<List<A11yMenuShortcut>> tList) {
        mShortcutList = tList;
        notifyDataSetChanged();
@@ -61,6 +69,7 @@ class ViewPagerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        GridView gridView = (GridView) holder.itemView;
        gridView.setNumColumns(A11yMenuViewPager.GridViewParams.getGridColumnCount(mService));
        gridView.setAdapter(adapter);
        gridView.setVerticalSpacing(mVerticalSpacing);
    }

    @Override