From 4827a7d5a932b5e795b68e5f70d91f5f4ef22ecb Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 28 Jun 2022 16:20:23 -0700 Subject: [PATCH] Fixing widget accessibility node order Making sure that that search and prediction bar are on top of RecyclerView/PagedView. This is determined by the widget of the drawn width of the views if their top matches Bug: 209579563 Test: Verified that the tite is focused first when opening widgets Change-Id: Ib800b3743ece915ac4894029462d5776d389ff3f --- res/layout/widgets_full_sheet_paged_view.xml | 13 ++--- .../widgets_full_sheet_recyclerview.xml | 6 ++- .../widget/picker/WidgetPagedView.java | 49 +++++++++++++++++++ 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 src/com/android/launcher3/widget/picker/WidgetPagedView.java diff --git a/res/layout/widgets_full_sheet_paged_view.xml b/res/layout/widgets_full_sheet_paged_view.xml index dfe226a8bd..24028fa9f9 100644 --- a/res/layout/widgets_full_sheet_paged_view.xml +++ b/res/layout/widgets_full_sheet_paged_view.xml @@ -16,37 +16,35 @@ - + android:paddingHorizontal="@dimen/widget_list_horizontal_margin" + launcher:pageIndicator="@+id/tabs" > - + @@ -58,6 +56,7 @@ android:gravity="center_horizontal" android:textSize="24sp" android:layout_marginTop="24dp" + android:paddingHorizontal="@dimen/widget_list_horizontal_margin" android:textColor="?android:attr/textColorSecondary" android:text="@string/widget_button_text"/> @@ -68,6 +67,7 @@ android:elevation="0.1dp" android:background="?android:attr/colorBackground" android:paddingBottom="8dp" + android:paddingHorizontal="@dimen/widget_list_horizontal_margin" android:clipToPadding="false"> @@ -79,6 +79,7 @@ android:layout_marginTop="8dp" android:background="@drawable/widgets_recommendation_background" android:paddingVertical="@dimen/recommended_widgets_table_vertical_padding" + android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin" android:visibility="gone" /> @@ -27,7 +27,6 @@ android:id="@+id/search_and_recommendations_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin" android:layout_below="@id/collapse_handle" android:paddingBottom="16dp" android:orientation="vertical"> @@ -40,6 +39,7 @@ android:textSize="24sp" android:layout_marginTop="24dp" android:textColor="?android:attr/textColorSecondary" + android:paddingHorizontal="@dimen/widget_list_horizontal_margin" android:text="@string/widget_button_text"/> @@ -60,6 +61,7 @@ android:layout_marginTop="8dp" android:background="@drawable/widgets_recommendation_background" android:paddingVertical="@dimen/recommended_widgets_table_vertical_padding" + android:paddingHorizontal="@dimen/widget_list_horizontal_margin" android:visibility="gone" /> diff --git a/src/com/android/launcher3/widget/picker/WidgetPagedView.java b/src/com/android/launcher3/widget/picker/WidgetPagedView.java new file mode 100644 index 0000000000..c95ec5f44b --- /dev/null +++ b/src/com/android/launcher3/widget/picker/WidgetPagedView.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.widget.picker; + +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; + +import com.android.launcher3.PagedView; +import com.android.launcher3.workprofile.PersonalWorkPagedView; + +/** + * A {@link PagedView} for showing different widgets for the personal and work profile. + */ +public class WidgetPagedView extends PersonalWorkPagedView { + + public WidgetPagedView(Context context) { + this(context, null); + } + + public WidgetPagedView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public WidgetPagedView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + setPageSpacing(getPaddingLeft()); + } + + @Override + public void getDrawingRect(Rect outRect) { + super.getDrawingRect(outRect); + outRect.left += getPaddingLeft(); + outRect.right -= getPaddingRight(); + } +}