diff --git a/res/layout/preference_memoryusage.xml b/res/layout/preference_memoryusage.xml
index 25fd888..303a5b7 100644
--- a/res/layout/preference_memoryusage.xml
+++ b/res/layout/preference_memoryusage.xml
@@ -16,6 +16,7 @@
 
 <com.android.settings.deviceinfo.PercentageBarChart
         xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:minHeight="?android:attr/listPreferredItemHeight"
@@ -24,5 +25,6 @@
         android:paddingRight="?android:attr/scrollbarSize"
         android:paddingTop="6dip"
         android:paddingBottom="6dip"
-        emptyColor="@color/memory_avail">
-</com.android.settings.deviceinfo.PercentageBarChart>
\ No newline at end of file
+        settings:minTickWidth="6dip"
+        settings:emptyColor="@color/memory_avail">
+</com.android.settings.deviceinfo.PercentageBarChart>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 57d0f45..7cff69c 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -46,5 +46,7 @@
     <declare-styleable name="PercentageBarChart">
         <!-- Background color -->
         <attr name="emptyColor" format="color" />
+        <!-- Minimum tick width for each slice in the bar chart. -->
+        <attr name="minTickWidth" format="dimension" />
     </declare-styleable>
 </resources>
diff --git a/src/com/android/settings/deviceinfo/PercentageBarChart.java b/src/com/android/settings/deviceinfo/PercentageBarChart.java
index 2f174fb..7d02301 100644
--- a/src/com/android/settings/deviceinfo/PercentageBarChart.java
+++ b/src/com/android/settings/deviceinfo/PercentageBarChart.java
@@ -36,6 +36,8 @@
 
     private Collection<Entry> mEntries;
 
+    private int mMinTickWidth = 1;
+
     public static class Entry {
         public final float percentage;
         public final Paint paint;
@@ -49,21 +51,9 @@
     public PercentageBarChart(Context context, AttributeSet attrs) {
         super(context, attrs);
 
-        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PercentageBarChart, 0, 0);
-
-        int emptyColor = Color.BLACK;
-
-        int n = a.getIndexCount();
-        for (int i = 0; i < n; i++) {
-            int attr = a.getIndex(i);
-
-            switch (attr) {
-                case R.styleable.PercentageBarChart_emptyColor:
-                    emptyColor = a.getColor(attr, 0);
-                    break;
-            }
-        }
-
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PercentageBarChart);
+        mMinTickWidth = a.getDimensionPixelSize(R.styleable.PercentageBarChart_minTickWidth, 1);
+        int emptyColor = a.getColor(R.styleable.PercentageBarChart_emptyColor, Color.BLACK);
         a.recycle();
 
         mEmptyPaint.setColor(emptyColor);
@@ -89,7 +79,7 @@
                 if (e.percentage == 0f) {
                     entryWidth = 0;
                 } else {
-                    entryWidth = Math.max(1, (int) (width * e.percentage));
+                    entryWidth = Math.max(mMinTickWidth, (int) (width * e.percentage));
                 }
 
                 final int nextX = lastX + entryWidth;
