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) {