summaryrefslogtreecommitdiff
path: root/java/res
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2023-09-20 15:02:21 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-09-20 15:02:21 +0000
commit07c906b2c45e406effb57cc70c51e4fa12dc4c59 (patch)
tree3a9c196a46423d815a52cb19f0655cbb580252c5 /java/res
parentc7bcd3858d5aa3b7750890abfec73f40e175357b (diff)
parent5e4370b5de1347909d514e279e1aada582458820 (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.xml128
-rw-r--r--java/res/layout/chooser_list_per_profile_wrap.xml42
-rw-r--r--java/res/values/attrs.xml5
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">