aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2014-04-30 21:39:14 -0700
committerScott Jackson <daneren2005@gmail.com>2014-04-30 21:39:14 -0700
commit951354e15c3c680b2c2966e9da06d7ca0cbc5fde (patch)
treeddba8b7ae7b238cd5ef32edef5da8065feb81de5
parent772dcbba851d313bc36f2bc51143044255139d4c (diff)
downloaddsub-951354e15c3c680b2c2966e9da06d7ca0cbc5fde.tar.gz
dsub-951354e15c3c680b2c2966e9da06d7ca0cbc5fde.tar.bz2
dsub-951354e15c3c680b2c2966e9da06d7ca0cbc5fde.zip
Gingerbread compatibility
-rw-r--r--src/github/daneren2005/dsub/view/UnscrollableGridView.java29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/github/daneren2005/dsub/view/UnscrollableGridView.java b/src/github/daneren2005/dsub/view/UnscrollableGridView.java
index a36a7b79..df77295f 100644
--- a/src/github/daneren2005/dsub/view/UnscrollableGridView.java
+++ b/src/github/daneren2005/dsub/view/UnscrollableGridView.java
@@ -1,6 +1,8 @@
package github.daneren2005.dsub.view;
+import android.annotation.TargetApi;
import android.content.Context;
+import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AbsListView;
@@ -27,8 +29,8 @@ public class UnscrollableGridView extends GridView {
public int getColumnWidth() {
// This method will be called from onMeasure() too.
// It's better to use getMeasuredWidth(), as it is safe in this case.
- final int totalHorizontalSpacing = getNumColumns() > 0 ? (getNumColumns() - 1) * getHorizontalSpacing() : 0;
- return (getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - totalHorizontalSpacing) / getNumColumns();
+ final int totalHorizontalSpacing = getNumColumnsCompat() > 0 ? (getNumColumnsCompat() - 1) * getHorizontalSpacing() : 0;
+ return (getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - totalHorizontalSpacing) / getNumColumnsCompat();
}
@Override
@@ -70,7 +72,7 @@ public class UnscrollableGridView extends GridView {
}
// Number of rows required to 'mTotal' items.
- final int rows = (int) Math.ceil((double) getCount() / getNumColumns());
+ final int rows = (int) Math.ceil((double) getCount() / getNumColumnsCompat());
final int childrenHeight = childHeight * rows;
final int totalVerticalSpacing = rows > 0 ? (rows - 1) * getVerticalSpacing() : 0;
@@ -78,4 +80,25 @@ public class UnscrollableGridView extends GridView {
final int measuredHeight = childrenHeight + getPaddingTop() + getPaddingBottom() + totalVerticalSpacing;
setMeasuredDimension(measuredWidth, measuredHeight);
}
+
+ private int getNumColumnsCompat() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ return getNumColumnsCompat11();
+ } else {
+ int columns = 0;
+ int children = getChildCount();
+ if (children > 0) {
+ int width = getChildAt(0).getMeasuredWidth();
+ if (width > 0) {
+ columns = getWidth() / width;
+ }
+ }
+ return columns > 0 ? columns : AUTO_FIT;
+ }
+ }
+
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ private int getNumColumnsCompat11() {
+ return getNumColumns();
+ }
}