summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/qs
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2014-12-11 21:00:12 +0100
committerJorim Jaggi <jjaggi@google.com>2014-12-11 21:51:30 +0100
commit0ed01deb2fc99603a33f968044703a740673c7b3 (patch)
treeefddf4a8eb60d08d4a957bfa3249bd7f4ba0d49c /packages/SystemUI/src/com/android/systemui/qs
parent43f4372c0aa87171f7e8bc3f20f7d2a78e6c6593 (diff)
downloadframeworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.zip
frameworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.tar.gz
frameworks_base-0ed01deb2fc99603a33f968044703a740673c7b3.tar.bz2
Limit item count in QS detail
- Introduce a maximum number of items to be shown in QS detail view depending on the device configuration. - For Wifi and Cast, make the panel exactly that height as we would show the maximum count of items, in order to prevent that the buttons jump around. Bug: 18665311 Change-Id: I7c0c383a902d295f1b486b8a074e15b990fbe562
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/qs')
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java1
2 files changed, 20 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java
index a311d6e..9155102 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailItems.java
@@ -51,8 +51,10 @@ public class QSDetailItems extends FrameLayout {
private boolean mItemsVisible = true;
private LinearLayout mItems;
private View mEmpty;
+ private View mMinHeightSpacer;
private TextView mEmptyText;
private ImageView mEmptyIcon;
+ private int mMaxItems;
public QSDetailItems(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -77,6 +79,12 @@ public class QSDetailItems extends FrameLayout {
mEmpty.setVisibility(GONE);
mEmptyText = (TextView) mEmpty.findViewById(android.R.id.title);
mEmptyIcon = (ImageView) mEmpty.findViewById(android.R.id.icon);
+ mMinHeightSpacer = findViewById(R.id.min_height_spacer);
+
+ // By default, a detail item view has fixed size.
+ mMaxItems = getResources().getInteger(
+ R.integer.quick_settings_detail_max_item_count);
+ setMinHeightInItems(mMaxItems);
}
@Override
@@ -102,6 +110,16 @@ public class QSDetailItems extends FrameLayout {
mEmptyText.setText(text);
}
+ /**
+ * Set the minimum height of this detail view, in item count.
+ */
+ public void setMinHeightInItems(int minHeightInItems) {
+ ViewGroup.LayoutParams lp = mMinHeightSpacer.getLayoutParams();
+ lp.height = minHeightInItems * getResources().getDimensionPixelSize(
+ R.dimen.qs_detail_item_height);
+ mMinHeightSpacer.setLayoutParams(lp);
+ }
+
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
@@ -135,7 +153,7 @@ public class QSDetailItems extends FrameLayout {
}
private void handleSetItems(Item[] items) {
- final int itemCount = items != null ? items.length : 0;
+ final int itemCount = items != null ? Math.min(items.length, mMaxItems) : 0;
mEmpty.setVisibility(itemCount == 0 ? VISIBLE : GONE);
mItems.setVisibility(itemCount == 0 ? GONE : VISIBLE);
for (int i = mItems.getChildCount() - 1; i >= itemCount; i--) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 1bc1d77..c15566f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -185,6 +185,7 @@ public class BluetoothTile extends QSTile<QSTile.BooleanState> {
mItems.setEmptyState(R.drawable.ic_qs_bluetooth_detail_empty,
R.string.quick_settings_bluetooth_detail_empty_text);
mItems.setCallback(this);
+ mItems.setMinHeightInItems(0);
updateItems();
setItemsVisible(mState.value);
return mItems;