diff options
Diffstat (limited to 'src/com/android/launcher3/DeviceProfile.java')
-rw-r--r-- | src/com/android/launcher3/DeviceProfile.java | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index b2366bb2b..bd7a7726a 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -33,6 +33,7 @@ import android.view.Surface; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; +import android.view.ViewGroup.MarginLayoutParams; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.LinearLayout; @@ -703,11 +704,6 @@ public class DeviceProfile { return visibleChildren; } - int calculateOverviewModeWidth(int visibleChildCount) { - return visibleChildCount * overviewModeBarItemWidthPx + - (visibleChildCount-1) * overviewModeBarSpacerWidthPx; - } - public void layout(Launcher launcher) { FrameLayout.LayoutParams lp; Resources res = launcher.getResources(); @@ -872,10 +868,38 @@ public class DeviceProfile { Rect r = getOverviewModeButtonBarRect(); lp = (FrameLayout.LayoutParams) overviewMode.getLayoutParams(); lp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - lp.width = Math.min(availableWidthPx, - calculateOverviewModeWidth(getVisibleChildCount(overviewMode))); + + int visibleChildCount = getVisibleChildCount(overviewMode); + int totalItemWidth = visibleChildCount * overviewModeBarItemWidthPx; + int maxWidth = totalItemWidth + (visibleChildCount-1) * overviewModeBarSpacerWidthPx; + + lp.width = Math.min(availableWidthPx, maxWidth); lp.height = r.height(); overviewMode.setLayoutParams(lp); + + if (lp.width > totalItemWidth && visibleChildCount > 1) { + // We have enough space. Lets add some margin too. + int margin = (lp.width - totalItemWidth) / (visibleChildCount-1); + View lastChild = null; + + // Set margin of all visible children except the last visible child + for (int i = 0; i < visibleChildCount; i++) { + if (lastChild != null) { + MarginLayoutParams clp = (MarginLayoutParams) lastChild.getLayoutParams(); + if (isLayoutRtl) { + clp.leftMargin = margin; + } else { + clp.rightMargin = margin; + } + lastChild.setLayoutParams(clp); + lastChild = null; + } + View thisChild = overviewMode.getChildAt(i); + if (thisChild.getVisibility() != View.GONE) { + lastChild = thisChild; + } + } + } } } } |