Merge "Add outset to decor view measuring" into klp-modular-dev

This commit is contained in:
Michael Kolb
2014-04-01 20:40:34 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 1 deletions

View File

@@ -1639,6 +1639,7 @@
that is, when in portrait. Can be either an absolute dimension
or a fraction of the screen size in that dimension. -->
<attr name="windowFixedHeightMajor" format="dimension|fraction" />
<attr name="windowOutsetBottom" format="dimension" />
</declare-styleable>
<!-- The set of attributes that describe a AlertDialog's theme. -->

View File

@@ -125,6 +125,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
TypedValue mFixedWidthMinor;
TypedValue mFixedHeightMajor;
TypedValue mFixedHeightMinor;
TypedValue mOutsetBottom;
// This is the top-level view of the window, containing the window decor.
private DecorView mDecor;
@@ -2289,7 +2290,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
} else {
h = 0;
}
if (h > 0) {
final int heightSize = MeasureSpec.getSize(heightMeasureSpec);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
@@ -2298,6 +2298,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
}
if (mOutsetBottom != null) {
int mode = MeasureSpec.getMode(heightMeasureSpec);
if (mode != MeasureSpec.UNSPECIFIED) {
int outset = (int) mOutsetBottom.getDimension(metrics);
int height = MeasureSpec.getSize(heightMeasureSpec);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height + outset, mode);
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
@@ -2904,6 +2913,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
a.getValue(com.android.internal.R.styleable.Window_windowFixedHeightMinor,
mFixedHeightMinor);
}
if (a.hasValue(com.android.internal.R.styleable.Window_windowOutsetBottom)) {
if (mOutsetBottom == null) mOutsetBottom = new TypedValue();
a.getValue(com.android.internal.R.styleable.Window_windowOutsetBottom, mOutsetBottom);
}
final Context context = getContext();
final int targetSdk = context.getApplicationInfo().targetSdkVersion;