From 8a867954222ba1466178cffca702ef49a8fc8990 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Mon, 2 Dec 2019 10:32:00 -0500 Subject: [PATCH] Replace QSDetail Switch with ViewStub Most of the time this switch is not needed. In particular right now, no view is using it so make it lazy. Bug: 133504338 Test: layout inspector Test: reenable details and see that Switch appears and works Change-Id: I4cc338a7bff7f8508c37be3a86798ae1d661aa9b --- .../SystemUI/res/layout/qs_detail_header.xml | 10 ++++---- .../SystemUI/res/layout/qs_detail_switch.xml | 23 +++++++++++++++++++ .../src/com/android/systemui/qs/QSDetail.java | 15 ++++++++---- 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 packages/SystemUI/res/layout/qs_detail_switch.xml diff --git a/packages/SystemUI/res/layout/qs_detail_header.xml b/packages/SystemUI/res/layout/qs_detail_header.xml index a1f0ee75c23ae..da80633f944bb 100644 --- a/packages/SystemUI/res/layout/qs_detail_header.xml +++ b/packages/SystemUI/res/layout/qs_detail_header.xml @@ -53,12 +53,12 @@ android:src="@drawable/ic_settings" android:visibility="gone"/> - + android:layout_height="wrap_content"/> diff --git a/packages/SystemUI/res/layout/qs_detail_switch.xml b/packages/SystemUI/res/layout/qs_detail_switch.xml new file mode 100644 index 0000000000000..abb2497fb7bef --- /dev/null +++ b/packages/SystemUI/res/layout/qs_detail_switch.xml @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index 60d30da431a5e..019cb1459838d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -28,6 +28,7 @@ import android.util.AttributeSet; import android.util.SparseArray; import android.view.View; import android.view.ViewGroup; +import android.view.ViewStub; import android.view.accessibility.AccessibilityEvent; import android.widget.ImageView; import android.widget.LinearLayout; @@ -58,7 +59,8 @@ public class QSDetail extends LinearLayout { protected View mQsDetailHeader; protected TextView mQsDetailHeaderTitle; - protected Switch mQsDetailHeaderSwitch; + private ViewStub mQsDetailHeaderSwitchStub; + private Switch mQsDetailHeaderSwitch; protected ImageView mQsDetailHeaderProgress; protected QSTileHost mHost; @@ -98,7 +100,7 @@ public class QSDetail extends LinearLayout { mQsDetailHeader = findViewById(R.id.qs_detail_header); mQsDetailHeaderTitle = (TextView) mQsDetailHeader.findViewById(android.R.id.title); - mQsDetailHeaderSwitch = (Switch) mQsDetailHeader.findViewById(android.R.id.toggle); + mQsDetailHeaderSwitchStub = mQsDetailHeader.findViewById(R.id.toggle_stub); mQsDetailHeaderProgress = findViewById(R.id.qs_detail_header_progress); updateDetailText(); @@ -252,9 +254,12 @@ public class QSDetail extends LinearLayout { mQsDetailHeaderTitle.setText(adapter.getTitle()); final Boolean toggleState = adapter.getToggleState(); if (toggleState == null) { - mQsDetailHeaderSwitch.setVisibility(INVISIBLE); + if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setVisibility(INVISIBLE); mQsDetailHeader.setClickable(false); } else { + if (mQsDetailHeaderSwitch == null) { + mQsDetailHeaderSwitch = (Switch) mQsDetailHeaderSwitchStub.inflate(); + } mQsDetailHeaderSwitch.setVisibility(VISIBLE); handleToggleStateChanged(toggleState, adapter.getToggleEnabled()); mQsDetailHeader.setClickable(true); @@ -274,9 +279,9 @@ public class QSDetail extends LinearLayout { if (mAnimatingOpen) { return; } - mQsDetailHeaderSwitch.setChecked(state); + if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setChecked(state); mQsDetailHeader.setEnabled(toggleEnabled); - mQsDetailHeaderSwitch.setEnabled(toggleEnabled); + if (mQsDetailHeaderSwitch != null) mQsDetailHeaderSwitch.setEnabled(toggleEnabled); } private void handleScanStateChanged(boolean state) {