Support contextual suggestion

- add a suggestion layout
- add an interface to get fragment in suggestion feature provider
- remove the first preference category of homepage IA to align its top
  with the bottom of the search box

Bug: 173768418
Test: robotest
Change-Id: I784e3eef29ca474c4c89f07b916c6500fabbf7d4
This commit is contained in:
Jason Chiu
2020-11-20 17:16:41 +08:00
parent 3932b07365
commit bd854ccd10
8 changed files with 148 additions and 40 deletions

View File

@@ -57,6 +57,41 @@
android:layout_height="wrap_content"
android:touchscreenBlocksFocus="false"
android:keyboardNavigationCluster="false">
<include layout="@layout/search_bar"/>
<LinearLayout
android:id="@+id/app_bar_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">
<LinearLayout
android:id="@+id/contextual_suggestion_content"
android:layout_width="match_parent"
android:layout_height="@dimen/suggestion_height"
android:paddingHorizontal="@dimen/suggestion_padding_horizontal"
android:paddingBottom="@dimen/suggestion_padding_bottom"
android:orientation="vertical"
android:gravity="bottom"
android:visibility="gone">
<TextView
android:id="@+id/suggestion_title"
android:text="@string/settings_label"
style="@style/ContextualSuggestionText"/>
<Button
android:id="@+id/suggestion_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/suggestion_button_margin_top"
android:paddingHorizontal="@dimen/suggestion_button_padding_horizontal"
android:visibility="gone"
style="@style/ActionPrimaryButton"/>
</LinearLayout>
<include layout="@layout/search_bar"/>
</LinearLayout>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -123,13 +123,20 @@
<dimen name="switchbar_subsettings_margin_start">72dp</dimen>
<dimen name="switchbar_subsettings_margin_end">16dp</dimen>
<!-- Search bar and avatar -->
<dimen name="search_bar_margin">24dp</dimen>
<dimen name="search_bar_height">48dp</dimen>
<dimen name="search_bar_text_size">16dp</dimen>
<dimen name="search_bar_text_size">16sp</dimen>
<dimen name="search_bar_card_elevation">2dp</dimen>
<dimen name="search_bar_content_inset">64dp</dimen>
<dimen name="avatar_length">@dimen/search_bar_height</dimen>
<!-- Contextual suggestions -->
<dimen name="suggestion_height">224dp</dimen>
<dimen name="suggestion_padding_horizontal">24dp</dimen>
<dimen name="suggestion_padding_bottom">8dp</dimen>
<dimen name="suggestion_button_margin_top">16dp</dimen>
<dimen name="suggestion_button_padding_horizontal">24dp</dimen>
<!-- Dimensions for Wifi Assistant Card -->
<dimen name="wifi_assistant_padding_top_bottom">16dp</dimen>

View File

@@ -782,6 +782,14 @@
<item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
</style>
<style name="ContextualSuggestionText" parent="@android:style/TextAppearance.DeviceDefault">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">32sp</item>
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item>
</style>
<style name="RequestManageCredentialsButtonPanel">
<item name="android:paddingStart">12dp</item>
<item name="android:paddingEnd">12dp</item>

View File

@@ -20,26 +20,21 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:key="top_level_settings_grouped">
<PreferenceCategory
android:key="connectivity"
<Preference
android:fragment="com.android.settings.network.NetworkDashboardFragment"
android:icon="@drawable/ic_homepage_network"
android:key="top_level_network"
android:order="-140"
settings:allowDividerAbove="false">
<Preference
android:fragment="com.android.settings.network.NetworkDashboardFragment"
android:icon="@drawable/ic_homepage_network"
android:key="top_level_network"
android:order="-140"
android:title="@string/network_dashboard_title"
settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
android:title="@string/network_dashboard_title"
settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
<Preference
android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
android:icon="@drawable/ic_homepage_connected_device"
android:key="top_level_connected_devices"
android:order="-130"
android:title="@string/connected_devices_dashboard_title"
settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
</PreferenceCategory>
<Preference
android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
android:icon="@drawable/ic_homepage_connected_device"
android:key="top_level_connected_devices"
android:order="-130"
android:title="@string/connected_devices_dashboard_title"
settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
<PreferenceCategory
android:key="apps"