diff options
| author | 2023-09-20 15:02:21 +0000 | |
|---|---|---|
| committer | 2023-09-20 15:02:21 +0000 | |
| commit | 07c906b2c45e406effb57cc70c51e4fa12dc4c59 (patch) | |
| tree | 3a9c196a46423d815a52cb19f0655cbb580252c5 /java/res | |
| parent | c7bcd3858d5aa3b7750890abfec73f40e175357b (diff) | |
| parent | 5e4370b5de1347909d514e279e1aada582458820 (diff) | |
Merge "Make preview scrollable under a feature flag." into main
Diffstat (limited to 'java/res')
| -rw-r--r-- | java/res/layout/chooser_grid_scrollable_preview.xml | 128 | ||||
| -rw-r--r-- | java/res/layout/chooser_list_per_profile_wrap.xml | 42 | ||||
| -rw-r--r-- | java/res/values/attrs.xml | 5 |
3 files changed, 175 insertions, 0 deletions
diff --git a/java/res/layout/chooser_grid_scrollable_preview.xml b/java/res/layout/chooser_grid_scrollable_preview.xml new file mode 100644 index 00000000..a5ac75a2 --- /dev/null +++ b/java/res/layout/chooser_grid_scrollable_preview.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +* Copyright 2015, 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. +*/ +--> +<com.android.intentresolver.widget.ResolverDrawerLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + app:maxCollapsedHeight="0dp" + app:maxCollapsedHeightSmall="56dp" + app:useScrollablePreviewNestedFlingLogic="true" + android:maxWidth="@dimen/chooser_width" + android:id="@androidprv:id/contentPanel"> + + <RelativeLayout + android:id="@androidprv:id/chooser_header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_alwaysShow="true" + android:elevation="0dp" + android:background="@drawable/bottomsheet_background"> + + <View + android:id="@androidprv:id/drag" + android:layout_width="64dp" + android:layout_height="4dp" + android:background="@drawable/ic_drag_handle" + android:layout_marginTop="@dimen/chooser_edge_margin_thin" + android:layout_marginBottom="@dimen/chooser_edge_margin_thin" + android:layout_centerHorizontal="true" + android:layout_alignParentTop="true" /> + + <TextView android:id="@android:id/title" + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:textAppearance="@android:style/TextAppearance.DeviceDefault.WindowTitle" + android:gravity="center" + android:paddingBottom="@dimen/chooser_view_spacing" + android:paddingLeft="24dp" + android:paddingRight="24dp" + android:visibility="gone" + android:layout_below="@androidprv:id/drag" + android:layout_centerHorizontal="true"/> + </RelativeLayout> + + <FrameLayout + android:id="@+id/chooser_headline_row_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_alwaysShow="true" + android:background="?androidprv:attr/materialColorSurfaceContainer"> + + <ViewStub + android:id="@+id/chooser_headline_row_stub" + android:inflatedId="@+id/chooser_headline_row" + android:layout="@layout/chooser_headline_row" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingHorizontal="@dimen/chooser_edge_margin_normal" + android:layout_marginBottom="@dimen/chooser_view_spacing" /> + </FrameLayout> + + <com.android.intentresolver.widget.ChooserNestedScrollView + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:background="#f00"> + + <FrameLayout + android:id="@androidprv:id/content_preview_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" /> + + <TabHost + android:id="@androidprv:id/profile_tabhost" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:background="?androidprv:attr/materialColorSurfaceContainer"> + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <TabWidget + android:id="@android:id/tabs" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone"> + </TabWidget> + <FrameLayout + android:id="@android:id/tabcontent" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <com.android.intentresolver.ResolverViewPager + android:id="@androidprv:id/profile_pager" + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </FrameLayout> + </LinearLayout> + </TabHost> + </LinearLayout> + + </com.android.intentresolver.widget.ChooserNestedScrollView> + +</com.android.intentresolver.widget.ResolverDrawerLayout> diff --git a/java/res/layout/chooser_list_per_profile_wrap.xml b/java/res/layout/chooser_list_per_profile_wrap.xml new file mode 100644 index 00000000..157fa75d --- /dev/null +++ b/java/res/layout/chooser_list_per_profile_wrap.xml @@ -0,0 +1,42 @@ +<!-- + ~ Copyright (C) 2019 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. + --> +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:descendantFocusability="blocksDescendants"> + <!-- ^^^ Block descendants from receiving focus to prevent NestedScrollView + (ChooserNestedScrollView) scrolling to the focused view when switching tabs. Without it, TabHost + view will request focus on the newly activated tab. The RecyclerView from this layout gets + focused and notifies its parents (including NestedScrollView) about it through + #requestChildFocus method call. NestedScrollView's view implementation of the method will + scroll to the focused view. --> + + <androidx.recyclerview.widget.RecyclerView + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layoutManager="com.android.intentresolver.ChooserGridLayoutManager" + android:id="@androidprv:id/resolver_list" + android:clipToPadding="false" + android:background="?androidprv:attr/materialColorSurfaceContainer" + android:scrollbars="none" + android:elevation="1dp" + android:nestedScrollingEnabled="true" /> + + <include layout="@layout/resolver_empty_states" /> +</RelativeLayout> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 67acb3ae..c9f2c300 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -32,6 +32,11 @@ will push all ignoreOffset siblings below it when the drawer is moved i.e. setting the top limit the ignoreOffset elements. --> <attr name="ignoreOffsetTopLimit" format="reference" /> + <!-- Specifies whether ResolverDrawerLayout should use an alternative nested fling logic + adjusted for the scrollable preview feature. + Controlled by the flag com.android.intentresolver.Flags#FLAG_SCROLLABLE_PREVIEW. + --> + <attr name="useScrollablePreviewNestedFlingLogic" format="boolean" /> </declare-styleable> <declare-styleable name="ResolverDrawerLayout_LayoutParams"> |