Don't use a scrollable dialog for CastDialog

Cast dialog needs to display a ListView that may be scrollable. ListView
does not play well inside a NestedScrollView. As a low risk solution,
special case the style for this dialog to not use NestedScrollView.

Test: manual
Fixes: 230517187
Change-Id: I29eb27050c39915ee16f81b83abb8dae781f9588
This commit is contained in:
Fabian Kozynski
2022-05-05 14:55:52 -04:00
parent d70a79df35
commit 18992e982f
3 changed files with 94 additions and 70 deletions

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2021 The Android Open Source Project
~ 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.
@@ -15,88 +14,83 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.android.internal.widget.AlertDialogLayout
android:id="@*android:id/parentPanel"
<com.android.internal.widget.AlertDialogLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@*android:id/parentPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|top"
android:orientation="vertical"
android:paddingTop="@dimen/dialog_top_padding"
>
<include layout="@layout/alert_dialog_title_systemui" />
<FrameLayout
android:id="@*android:id/contentPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal|top"
android:orientation="vertical"
android:paddingTop="@dimen/dialog_top_padding"
>
android:minHeight="48dp"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding"
>
<include layout="@layout/alert_dialog_title_systemui" />
<FrameLayout
android:id="@*android:id/contentPanel"
<ScrollView
android:id="@*android:id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding"
>
android:clipToPadding="false">
<ScrollView
android:id="@*android:id/scrollView"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false">
android:orientation="vertical">
<LinearLayout
<Space
android:id="@*android:id/textSpacerNoTitle"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="0dp" />
<TextView
android:id="@*android:id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
style="@style/TextAppearance.Dialog.Body.Message" />
<Space
android:id="@*android:id/textSpacerNoTitle"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="0dp" />
<Space
android:id="@*android:id/textSpacerNoButtons"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="6dp" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<TextView
android:id="@*android:id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/TextAppearance.Dialog.Body.Message" />
<Space
android:id="@*android:id/textSpacerNoButtons"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="6dp" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<FrameLayout
android:id="@*android:id/customPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding"
>
<FrameLayout
android:id="@*android:id/customPanel"
android:id="@*android:id/custom"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding">
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding"
>
<FrameLayout
android:id="@*android:id/custom"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dialog_side_padding"
android:paddingEnd="@dimen/dialog_side_padding">
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/alert_dialog_button_bar_systemui" />
</FrameLayout>
</com.android.internal.widget.AlertDialogLayout>
</androidx.core.widget.NestedScrollView>
layout="@layout/alert_dialog_button_bar_systemui" />
</FrameLayout>
</com.android.internal.widget.AlertDialogLayout>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2021 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.
-->
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/alert_dialog_systemui" />
</androidx.core.widget.NestedScrollView>

View File

@@ -380,7 +380,7 @@
<item name="android:buttonBarNegativeButtonStyle">@style/Widget.Dialog.Button.BorderButton</item>
<item name="android:buttonBarNeutralButtonStyle">@style/Widget.Dialog.Button.BorderButton</item>
<item name="android:colorBackground">?androidprv:attr/colorSurface</item>
<item name="android:alertDialogStyle">@style/AlertDialogStyle</item>
<item name="android:alertDialogStyle">@style/ScrollableAlertDialogStyle</item>
<item name="android:buttonBarStyle">@style/ButtonBarStyle</item>
<item name="android:buttonBarButtonStyle">@style/Widget.Dialog.Button.Large</item>
</style>
@@ -389,6 +389,10 @@
<item name="android:layout">@layout/alert_dialog_systemui</item>
</style>
<style name="ScrollableAlertDialogStyle" parent="@androidprv:style/AlertDialog.DeviceDefault">
<item name="android:layout">@layout/scrollable_alert_dialog_systemui</item>
</style>
<style name="ButtonBarStyle" parent="@androidprv:style/DeviceDefault.ButtonBar.AlertDialog">
<item name="android:paddingTop">@dimen/dialog_button_bar_top_padding</item>
<item name="android:paddingBottom">@dimen/dialog_bottom_padding</item>
@@ -994,6 +998,7 @@
<style name="Theme.SystemUI.Dialog.Cast">
<item name="android:textAppearanceMedium">@style/TextAppearance.CastItem</item>
<item name="android:alertDialogStyle">@style/AlertDialogStyle</item>
</style>
<!-- ************************************************************************************* -->