Remove magic paddings from bookmark view
Use calculated sizes to correctly center without the need for
"magic" padding values.
Change-Id: Ida64a80243df9bf05355dd1db1047fc16c10b726
diff --git a/res/layout-xlarge/bookmarks_history.xml b/res/layout-sw600dp/bookmarks_history.xml
similarity index 100%
rename from res/layout-xlarge/bookmarks_history.xml
rename to res/layout-sw600dp/bookmarks_history.xml
diff --git a/res/layout-xlarge/history.xml b/res/layout-sw600dp/history.xml
similarity index 100%
rename from res/layout-xlarge/history.xml
rename to res/layout-sw600dp/history.xml
diff --git a/res/layout/bookmark_grid_row.xml b/res/layout/bookmark_grid_row.xml
index 5dc3a76..7955ad7 100644
--- a/res/layout/bookmark_grid_row.xml
+++ b/res/layout/bookmark_grid_row.xml
@@ -17,8 +17,6 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/combo_rowPadding"
- android:paddingRight="@dimen/combo_rowPadding">
+ android:layout_height="match_parent">
</LinearLayout>
diff --git a/res/layout/bookmarks.xml b/res/layout/bookmarks.xml
index bcabc03..4a13c6f 100644
--- a/res/layout/bookmarks.xml
+++ b/res/layout/bookmarks.xml
@@ -20,9 +20,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:paddingTop="@dimen/combo_paddingTop"
- android:paddingLeft="@dimen/combo_paddingLeftRight"
- android:paddingRight="@dimen/combo_paddingLeftRight">
+ android:paddingTop="@dimen/combo_paddingTop">
<FrameLayout
android:id="@+id/header_container"
diff --git a/res/values-sw600dp-port/dimensions.xml b/res/values-sw600dp-port/dimensions.xml
index 3ba38fe..682bbaf 100644
--- a/res/values-sw600dp-port/dimensions.xml
+++ b/res/values-sw600dp-port/dimensions.xml
@@ -14,7 +14,5 @@
<dimen name="widgetThumbnailHeight">84dip</dimen>
<dimen name="widgetHorizontalSpacing">6dip</dimen>
<dimen name="widgetVerticalSpacing">6dip</dimen>
- <dimen name="combo_paddingLeftRight">16dip</dimen>
- <dimen name="combo_horizontalSpacing">8dip</dimen>
- <dimen name="combo_rowPadding">10dip</dimen>
+ <dimen name="combo_horizontalSpacing">4dip</dimen>
</resources>
diff --git a/res/values-sw600dp/dimensions.xml b/res/values-sw600dp/dimensions.xml
index 82fc37e..977148b 100644
--- a/res/values-sw600dp/dimensions.xml
+++ b/res/values-sw600dp/dimensions.xml
@@ -25,9 +25,7 @@
<dimen name="mv_border_width">3dp</dimen>
<!-- For the combined Bookmarks History view -->
<dimen name="combo_paddingTop">50dip</dimen>
- <dimen name="combo_paddingLeftRight">134dip</dimen>
<dimen name="combo_horizontalSpacing">8dip</dimen>
- <dimen name="combo_rowPadding">10dip</dimen>
<dimen name="qc_radius_start">50dip</dimen>
<dimen name="qc_radius_increment">70dip</dimen>
<dimen name="qc_slop">15dip</dimen>
diff --git a/res/values-xlarge/styles.xml b/res/values-sw600dp/styles.xml
similarity index 100%
rename from res/values-xlarge/styles.xml
rename to res/values-sw600dp/styles.xml
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index dbb0c60..950de5b 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -55,9 +55,7 @@
<dimen name="widgetVerticalSpacing">12dip</dimen>
<!-- For the combined Bookmarks History view -->
<dimen name="combo_paddingTop">10dip</dimen>
- <dimen name="combo_paddingLeftRight">0dip</dimen>
<dimen name="combo_horizontalSpacing">6dip</dimen>
- <dimen name="combo_rowPadding">0dip</dimen>
<dimen name="tab_view_thumbnail_height">76dip</dimen>
<!-- Preference activity side margins -->
<dimen name="preference_screen_side_margin">0dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index ad0ed90..5a8c15f 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -27,4 +27,6 @@
<integer name="comboViewFadeInDuration">400</integer>
<!-- fade between tabs duration -->
<integer name="tabFadeDuration">300</integer>
+ <!-- The maximum number of columns in the bookmark grid view -->
+ <integer name="max_bookmark_columns">5</integer>
</resources>
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 7543528..16bcda5 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -52,6 +52,12 @@
}
void bindGridView(View view, Context context, Cursor cursor) {
+ // We need to set this to handle rotation and other configuration change
+ // events. If the padding didn't change, this is a no op.
+ int padding = context.getResources()
+ .getDimensionPixelSize(R.dimen.combo_horizontalSpacing);
+ view.setPadding(padding, view.getPaddingTop(),
+ padding, view.getPaddingBottom());
ImageView thumb = (ImageView) view.findViewById(R.id.thumb);
TextView tv = (TextView) view.findViewById(R.id.label);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index f92272f..d871f22 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -556,13 +556,9 @@
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Resources res = getActivity().getResources();
- int horizontalSpacing = (int) res.getDimension(R.dimen.combo_horizontalSpacing);
- mGrid.setHorizontalSpacing(horizontalSpacing);
mGrid.setColumnWidthFromLayout(R.layout.bookmark_thumbnail);
- int paddingLeftRight = (int) res.getDimension(R.dimen.combo_paddingLeftRight);
int paddingTop = (int) res.getDimension(R.dimen.combo_paddingTop);
- mRoot.setPadding(paddingLeftRight, paddingTop,
- paddingLeftRight, 0);
+ mRoot.setPadding(0, paddingTop, 0, 0);
getActivity().invalidateOptionsMenu();
}
diff --git a/src/com/android/browser/view/BookmarkExpandableGridView.java b/src/com/android/browser/view/BookmarkExpandableGridView.java
index f6b9f19..c8811d1 100644
--- a/src/com/android/browser/view/BookmarkExpandableGridView.java
+++ b/src/com/android/browser/view/BookmarkExpandableGridView.java
@@ -57,6 +57,7 @@
private boolean mLongClickable;
private BreadCrumbView.Controller mBreadcrumbController;
private BookmarkDragHandler mDragHandler;
+ private int mMaxColumnCount;
public BookmarkExpandableGridView(Context context) {
super(context);
@@ -78,14 +79,27 @@
mContext = context;
setItemsCanFocus(true);
setLongClickable(false);
+ mMaxColumnCount = mContext.getResources()
+ .getInteger(R.integer.max_bookmark_columns);
mAdapter = new BookmarkAccountAdapter(mContext);
super.setAdapter(mAdapter);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ int width = MeasureSpec.getSize(widthMeasureSpec);
+ int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+ if (width > 0) {
+ mAdapter.measureChildren(width);
+ if (mAdapter.mRowPadding > 0) {
+ width -= mAdapter.mRowPadding * 2;
+ }
+ widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, widthMode);
+ }
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- mAdapter.measureChildren();
+ if (width != getMeasuredWidth()) {
+ mAdapter.measureChildren(getMeasuredWidth());
+ }
}
@Override
@@ -100,10 +114,6 @@
mColumnWidth = v.getMeasuredWidth();
}
- public void setHorizontalSpacing(int horizontalSpacing) {
- // TODO Auto-generated method stub
- }
-
public void clearAccounts() {
mAdapter.clear();
}
@@ -330,11 +340,6 @@
convertView = mInflater.inflate(R.layout.bookmark_grid_row, parent, false);
}
LinearLayout row = (LinearLayout) convertView;
- row.setPadding(
- mRowPadding,
- row.getPaddingTop(),
- mRowPadding,
- row.getPaddingBottom());
if (row.getChildCount() > mRowCount) {
row.removeViews(mRowCount, row.getChildCount() - mRowCount);
}
@@ -387,13 +392,13 @@
return mGroups.size();
}
- public void measureChildren() {
- int viewWidth = getMeasuredWidth();
+ public void measureChildren(int viewWidth) {
if (mLastViewWidth == viewWidth) return;
- ViewGroup parent = (ViewGroup) mInflater.inflate(R.layout.bookmark_grid_row, null);
- viewWidth -= parent.getPaddingLeft() + parent.getPaddingRight();
int rowCount = viewWidth / mColumnWidth;
+ if (mMaxColumnCount > 0) {
+ rowCount = Math.min(rowCount, mMaxColumnCount);
+ }
int rowPadding = (viewWidth - (rowCount * mColumnWidth)) / 2;
boolean notify = rowCount != mRowCount || rowPadding != mRowPadding;
mRowCount = rowCount;