am 330ae983: Merge "Fix issue where All Apps tab bar was too small" into honeycomb-mr2

* commit '330ae9835c920d4bdba43806d733c350991d0dcf':
  Fix issue where All Apps tab bar was too small
This commit is contained in:
Michael Jurka
2011-05-31 15:01:50 -07:00
committed by Android Git Automerger
4 changed files with 37 additions and 27 deletions

View File

@@ -122,8 +122,7 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All
mCellCountY = determineCellCountY(height, layout);
mLastMeasureWidth = width;
mLastMeasureHeight = height;
removeAllViews();
invalidatePageData();
postInvalidatePageData(true);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@@ -132,12 +131,7 @@ public class AllAppsPagedView extends PagedViewWithDraggableItems implements All
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
if (mWaitingToInitPages) {
mWaitingToInitPages = false;
invalidatePageData();
// invalidatePageData() is what causes the child pages to be created. We need the
// children to be measured before layout, so force a new measure here.
measure(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY));
postInvalidatePageData(false);
}
super.onLayout(changed, left, top, right, bottom);
}

View File

@@ -163,18 +163,28 @@ public class AllAppsTabbed extends TabHost implements AllAppsView, LauncherTrans
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if (mFirstLayout) {
mFirstLayout = false;
// Set the width of the tab bar properly
int pageWidth = mAllApps.getPageContentWidth();
TabWidget tabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs);
View allAppsTabBar = (View) findViewById(R.id.all_apps_tab_bar);
if (allAppsTabBar == null) throw new Resources.NotFoundException();
int tabWidgetPadding = 0;
final int childCount = tabWidget.getChildCount();
if (childCount > 0) {
tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2;
}
allAppsTabBar.getLayoutParams().width = pageWidth + tabWidgetPadding;
}
// Set the width of the tab bar properly
int pageWidth = mAllApps.getPageContentWidth();
TabWidget tabWidget = (TabWidget) findViewById(com.android.internal.R.id.tabs);
View allAppsTabBar = (View) findViewById(R.id.all_apps_tab_bar);
if (allAppsTabBar == null) throw new Resources.NotFoundException();
int tabWidgetPadding = 0;
final int childCount = tabWidget.getChildCount();
if (childCount > 0) {
tabWidgetPadding += tabWidget.getChildAt(0).getPaddingLeft() * 2;
}
int newWidth = Math.min(getMeasuredWidth(), pageWidth + tabWidgetPadding);
if (newWidth != allAppsTabBar.getLayoutParams().width) {
allAppsTabBar.getLayoutParams().width = newWidth;
post(new Runnable() {
public void run() {
requestLayout();
}
});
}
super.onLayout(changed, l, t, r, b);
}

View File

@@ -210,8 +210,7 @@ public class CustomizePagedView extends PagedViewWithDraggableItems
mPageContentWidth = layout.getContentWidth();
mPageContentHeight = layout.getContentHeight();
mMinPageWidth = layout.getWidthBeforeFirstLayout();
removeAllViews();
invalidatePageData();
postInvalidatePageData(true);
}
if (mPageContentHeight > 0) {
// Lock our height to the size of the page content
@@ -226,12 +225,7 @@ public class CustomizePagedView extends PagedViewWithDraggableItems
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
if (mWaitingToInitPages) {
mWaitingToInitPages = false;
invalidatePageData();
// invalidatePageData() is what causes the child pages to be created. We need the
// children to be measured before layout, so force a new measure here.
measure(MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY));
postInvalidatePageData(false);
}
super.onLayout(changed, left, top, right, bottom);
mFirstLayout = false;

View File

@@ -1514,6 +1514,18 @@ public abstract class PagedView extends ViewGroup {
*/
public abstract void syncPageItems(int page);
protected void postInvalidatePageData(final boolean clearViews) {
post(new Runnable() {
// post the call to avoid a call to requestLayout from a layout pass
public void run() {
if (clearViews) {
removeAllViews();
}
invalidatePageData();
}
});
}
protected void invalidatePageData() {
if (mContentIsRefreshable) {
// Update all the pages