--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+<!-- Container -->
+ <dimen name="container_max_width">736dp</dimen>
+
+</resources>
\ No newline at end of file
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
// The window insets
private final Rect mInsets = new Rect();
- // The bounds of the search bar. Only the left, top, right are used to inset the
- // search bar and the height is determined by the measurement of the layout
- private final Rect mFixedSearchBarBounds = new Rect();
// The computed padding to apply to the container to achieve the container bounds
protected final Rect mContentPadding = new Rect();
// The inset to apply to the edges and between the search bar and the container
private View mRevealView;
private View mContent;
+ protected final int mHorizontalPadding;
+
public BaseContainerView(Context context) {
this(context, null);
}
R.styleable.BaseContainerView, defStyleAttr, 0);
mRevealDrawable = a.getDrawable(R.styleable.BaseContainerView_revealBackground);
a.recycle();
+
+ int maxSize = getResources().getDimensionPixelSize(R.dimen.container_max_width);
+ int minMargin = getResources().getDimensionPixelSize(R.dimen.container_min_margin);
+ int width = ((Launcher) context).getDeviceProfile().availableWidthPx;
+
+ if (maxSize > 0) {
+ mHorizontalPadding = Math.max(minMargin, (width - maxSize) / 2);
+ } else {
+ mHorizontalPadding = Math.max(minMargin,
+ (int) getResources().getFraction(R.fraction.container_margin, width, 1));
+ }
}
@Override
* Sets the search bar bounds for this container view to match.
*/
final public void setSearchBarBounds(Rect bounds) {
- if (LauncherAppState.isDogfoodBuild() && !isValidSearchBarBounds(bounds)) {
- Log.e(TAG, "Invalid search bar bounds: " + bounds);
- }
-
- mFixedSearchBarBounds.set(bounds);
-
// Post the updates since they can trigger a relayout, and this call can be triggered from
// a layout pass itself.
post(new Runnable() {
*/
protected void updateBackgroundAndPaddings() {
Rect padding;
- if (isValidSearchBarBounds(mFixedSearchBarBounds)) {
- padding = new Rect(
- mFixedSearchBarBounds.left,
- mInsets.top + mContainerBoundsInset,
- getMeasuredWidth() - mFixedSearchBarBounds.right,
- mInsets.bottom + mContainerBoundsInset
- );
- } else {
- padding = new Rect(
- mInsets.left + mContainerBoundsInset,
- mInsets.top + mContainerBoundsInset,
- mInsets.right + mContainerBoundsInset,
- mInsets.bottom + mContainerBoundsInset
- );
- }
+ padding = new Rect(
+ mHorizontalPadding,
+ mInsets.top + mContainerBoundsInset,
+ mHorizontalPadding,
+ mInsets.bottom + mContainerBoundsInset
+ );
// The container padding changed, notify the container.
if (!padding.equals(mContentPadding)) {
protected abstract void onUpdateBgPadding(Rect padding, Rect bgPadding);
- /**
- * Returns whether the search bar bounds we got are considered valid.
- */
- private boolean isValidSearchBarBounds(Rect searchBarBounds) {
- return !searchBarBounds.isEmpty() &&
- searchBarBounds.right <= getMeasuredWidth() &&
- searchBarBounds.bottom <= getMeasuredHeight();
- }
-
public final View getContentView() {
return mContent;
}