diff --git a/packages/SystemUI/res/layout/volume_dnd_icon.xml b/packages/SystemUI/res/layout/volume_dnd_icon.xml
index 215b2300992a4..ac235b7090c5f 100644
--- a/packages/SystemUI/res/layout/volume_dnd_icon.xml
+++ b/packages/SystemUI/res/layout/volume_dnd_icon.xml
@@ -15,16 +15,16 @@
-->
+ android:id="@+id/dnd_icon"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 5c7ce59c10657..d7aedc4e53f16 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -53,7 +53,6 @@ import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.os.VibrationEffect;
-import android.os.Vibrator;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.text.InputFilter;
@@ -73,8 +72,8 @@ import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
import android.view.animation.DecelerateInterpolator;
+import android.widget.FrameLayout;
import android.widget.ImageButton;
-import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
@@ -122,7 +121,7 @@ public class VolumeDialogImpl implements VolumeDialog {
private ImageButton mRingerIcon;
private View mSettingsView;
private ImageButton mSettingsIcon;
- private ImageView mZenIcon;
+ private FrameLayout mZenIcon;
private final List mRows = new ArrayList<>();
private ConfigurableTexts mConfigurableTexts;
private final SparseBooleanArray mDynamic = new SparseBooleanArray();
@@ -132,7 +131,6 @@ public class VolumeDialogImpl implements VolumeDialog {
private final Accessibility mAccessibility = new Accessibility();
private final ColorStateList mActiveTint;
private final ColorStateList mInactiveTint;
- private final Vibrator mVibrator;
private boolean mShowing;
private boolean mShowA11yStream;
@@ -153,7 +151,6 @@ public class VolumeDialogImpl implements VolumeDialog {
mActiveTint = ColorStateList.valueOf(Utils.getColorAccent(mContext));
mInactiveTint = loadColorStateList(R.color.volume_slider_inactive);
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
- mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
}
public void init(int windowType, Callback callback) {
@@ -673,7 +670,28 @@ public class VolumeDialogImpl implements VolumeDialog {
* @param enable whether to enable volume row views and hide dnd icon
*/
private void enableVolumeRowViewsH(VolumeRow row, boolean enable) {
- row.dndIcon.setVisibility(enable ? GONE : VISIBLE);
+ boolean showDndIcon = !enable;
+ row.dndIcon.setVisibility(showDndIcon ? VISIBLE : GONE);
+
+ if (showDndIcon && getNumVisibleRows() == 1) {
+ row.dndIcon.setLayoutParams(new FrameLayout.LayoutParams(
+ mContext.getResources().getDimensionPixelSize(
+ R.dimen.volume_dialog_panel_width),
+ FrameLayout.LayoutParams.WRAP_CONTENT));
+ } else if (row.view.getVisibility() == VISIBLE) {
+ row.dndIcon.setLayoutParams(new FrameLayout.LayoutParams(
+ FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
+ }
+ }
+
+ private int getNumVisibleRows() {
+ int count = 0;
+ for (int i = 0; i < mRows.size(); i++) {
+ if (mRows.get(i).view.getVisibility() == VISIBLE) {
+ count++;
+ }
+ }
+ return count;
}
/**
@@ -1241,6 +1259,6 @@ public class VolumeDialogImpl implements VolumeDialog {
private ObjectAnimator anim; // slider progress animation for non-touch-related updates
private int animTargetProgress;
private int lastAudibleLevel = 1;
- private ImageView dndIcon;
+ private FrameLayout dndIcon;
}
}