Constrain global actions panel to available space
Formerly, the global actions panel was given the entire screen, and was rendered above the global actions menu. Now, we limit it to the space unused by the menu. Bug: 133511683 Test: manual Change-Id: I74f4db0b9a2a4e030ec1fd53ddd65e7c372d229c
This commit is contained in:
@@ -58,6 +58,7 @@ android_library {
|
||||
"androidx.arch.core_core-runtime",
|
||||
"androidx.lifecycle_lifecycle-extensions",
|
||||
"androidx.dynamicanimation_dynamicanimation",
|
||||
"androidx-constraintlayout_constraintlayout",
|
||||
"iconloader_base",
|
||||
"SystemUI-tags",
|
||||
"SystemUI-proto",
|
||||
@@ -111,6 +112,7 @@ android_library {
|
||||
"androidx.arch.core_core-runtime",
|
||||
"androidx.lifecycle_lifecycle-extensions",
|
||||
"androidx.dynamicanimation_dynamicanimation",
|
||||
"androidx-constraintlayout_constraintlayout",
|
||||
"SystemUI-tags",
|
||||
"SystemUI-proto",
|
||||
"metrics-helper-lib",
|
||||
|
||||
@@ -1,73 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.android.systemui.globalactions.GlobalActionsGridLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@id/global_actions_view"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/global_actions_grid_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal"
|
||||
android:theme="@style/qs_theme"
|
||||
android:gravity="bottom | center_horizontal"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:paddingBottom="@dimen/global_actions_grid_container_shadow_offset"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_container_negative_shadow_offset"
|
||||
>
|
||||
<LinearLayout
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/global_actions_panel_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/global_actions_view"
|
||||
/>
|
||||
|
||||
<com.android.systemui.globalactions.GlobalActionsGridLayout
|
||||
android:id="@id/global_actions_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layoutDirection="ltr"
|
||||
android:orientation="horizontal"
|
||||
android:theme="@style/qs_theme"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:gravity="bottom | center_horizontal"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_container_bottom_margin"
|
||||
android:paddingBottom="@dimen/global_actions_grid_container_shadow_offset"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_container_negative_shadow_offset"
|
||||
>
|
||||
<!-- For separated items-->
|
||||
<LinearLayout
|
||||
android:id="@+id/separated_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_side_margin"
|
||||
android:paddingLeft="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
/>
|
||||
<!-- Grid of action items -->
|
||||
<com.android.systemui.globalactions.ListGridLayout
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:gravity="right"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_side_margin"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
android:paddingLeft="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
|
||||
android:layout_width="wrap_content"
|
||||
android:layoutDirection="ltr"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_container_bottom_margin"
|
||||
>
|
||||
<!-- For separated items-->
|
||||
<LinearLayout
|
||||
android:id="@+id/separated_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_side_margin"
|
||||
android:paddingLeft="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
/>
|
||||
<!-- Grid of action items -->
|
||||
<com.android.systemui.globalactions.ListGridLayout
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
</com.android.systemui.globalactions.ListGridLayout>
|
||||
</LinearLayout>
|
||||
android:orientation="vertical"
|
||||
android:gravity="right"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_side_margin"
|
||||
android:translationZ="@dimen/global_actions_translate"
|
||||
android:paddingLeft="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingRight="@dimen/global_actions_grid_horizontal_padding"
|
||||
android:paddingTop="@dimen/global_actions_grid_vertical_padding"
|
||||
android:paddingBottom="@dimen/global_actions_grid_vertical_padding"
|
||||
>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:layoutDirection="locale"
|
||||
/>
|
||||
</com.android.systemui.globalactions.ListGridLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</com.android.systemui.globalactions.GlobalActionsGridLayout>
|
||||
</com.android.systemui.globalactions.GlobalActionsGridLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -1588,17 +1588,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
// Disable rotation suggestions, if enabled
|
||||
setRotationSuggestionsEnabled(false);
|
||||
|
||||
FrameLayout panelContainer = new FrameLayout(mContext);
|
||||
FrameLayout panelContainer =
|
||||
findViewById(com.android.systemui.R.id.global_actions_panel_container);
|
||||
FrameLayout.LayoutParams panelParams =
|
||||
new FrameLayout.LayoutParams(
|
||||
FrameLayout.LayoutParams.MATCH_PARENT,
|
||||
FrameLayout.LayoutParams.WRAP_CONTENT);
|
||||
FrameLayout.LayoutParams.MATCH_PARENT);
|
||||
panelContainer.addView(mPanelController.getPanelContent(), panelParams);
|
||||
addContentView(
|
||||
panelContainer,
|
||||
new ViewGroup.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT));
|
||||
mBackgroundDrawable = mPanelController.getBackgroundDrawable();
|
||||
mScrimAlpha = 1f;
|
||||
}
|
||||
@@ -1606,8 +1602,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
|
||||
private void initializeLayout() {
|
||||
setContentView(getGlobalActionsLayoutId(mContext));
|
||||
fixNavBarClipping();
|
||||
mGlobalActionsLayout = findViewById(com.android.systemui.R.id.global_actions_view);
|
||||
mGlobalActionsLayout.setOutsideTouchListener(view -> dismiss());
|
||||
((View) mGlobalActionsLayout.getParent()).setOnClickListener(view -> dismiss());
|
||||
mGlobalActionsLayout.setListViewAccessibilityDelegate(new View.AccessibilityDelegate() {
|
||||
@Override
|
||||
public boolean dispatchPopulateAccessibilityEvent(
|
||||
@@ -1630,6 +1628,15 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
|
||||
getWindow().setBackgroundDrawable(mBackgroundDrawable);
|
||||
}
|
||||
|
||||
private void fixNavBarClipping() {
|
||||
ViewGroup content = findViewById(android.R.id.content);
|
||||
content.setClipChildren(false);
|
||||
content.setClipToPadding(false);
|
||||
ViewGroup contentParent = (ViewGroup) content.getParent();
|
||||
contentParent.setClipChildren(false);
|
||||
contentParent.setClipToPadding(false);
|
||||
}
|
||||
|
||||
private int getGlobalActionsLayoutId(Context context) {
|
||||
int rotation = RotationUtils.getRotation(context);
|
||||
boolean useGridLayout = isForceGridEnabled(context)
|
||||
|
||||
@@ -42,8 +42,6 @@ public class GlobalActionsGridLayout extends GlobalActionsLayout {
|
||||
listView.setReverseSublists(shouldReverseSublists());
|
||||
listView.setReverseItems(shouldReverseListItems());
|
||||
listView.setSwapRowsAndColumns(shouldSwapRowsAndColumns());
|
||||
|
||||
fixNavBarClipping();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -75,19 +73,6 @@ public class GlobalActionsGridLayout extends GlobalActionsLayout {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows the dialog to clip over the navbar, which prevents shadows and animations from being
|
||||
* cut off.
|
||||
*/
|
||||
private void fixNavBarClipping() {
|
||||
ViewGroup parent = (ViewGroup) this.getParent();
|
||||
ViewGroup parentParent = (ViewGroup) parent.getParent();
|
||||
parent.setClipChildren(false);
|
||||
parent.setClipToPadding(false);
|
||||
parentParent.setClipChildren(false);
|
||||
parentParent.setClipToPadding(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ListGridLayout getListView() {
|
||||
return (ListGridLayout) super.getListView();
|
||||
|
||||
@@ -48,8 +48,9 @@ public class GlobalActionsGridLayoutTest extends SysuiTestCase {
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mGridLayout = spy((GlobalActionsGridLayout)
|
||||
LayoutInflater.from(mContext).inflate(R.layout.global_actions_grid, null));
|
||||
mGridLayout = spy(LayoutInflater.from(mContext)
|
||||
.inflate(R.layout.global_actions_grid, null)
|
||||
.requireViewById(R.id.global_actions_view));
|
||||
mListGrid = spy(mGridLayout.getListView());
|
||||
doReturn(mListGrid).when(mGridLayout).getListView();
|
||||
}
|
||||
|
||||
@@ -43,8 +43,9 @@ public class ListGridLayoutTest extends SysuiTestCase {
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
GlobalActionsGridLayout globalActions = (GlobalActionsGridLayout)
|
||||
LayoutInflater.from(mContext).inflate(R.layout.global_actions_grid, null);
|
||||
GlobalActionsGridLayout globalActions = LayoutInflater.from(mContext)
|
||||
.inflate(R.layout.global_actions_grid, null)
|
||||
.requireViewById(R.id.global_actions_view);
|
||||
mListGridLayout = globalActions.getListView();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user