am a8c73fbd: am a619afd6: Merge "IME navigation guard implemented as a View." into klp-dev

* commit 'a8c73fbd5c90a0d4eacc7aaedc0ca30cfcd5f621':
  IME navigation guard implemented as a View.
This commit is contained in:
John Spurlock
2013-10-10 11:21:37 -07:00
committed by Android Git Automerger
4 changed files with 20 additions and 20 deletions

View File

@@ -17,15 +17,15 @@
package com.android.internal.inputmethod; package com.android.internal.inputmethod;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
public class InputMethodRoot extends LinearLayout { public class InputMethodRoot extends LinearLayout {
private final Rect mGuardRect = new Rect();
private final Paint mGuardPaint = new Paint(); private View mNavigationGuard;
public InputMethodRoot(Context context) { public InputMethodRoot(Context context) {
this(context, null); this(context, null);
@@ -37,25 +37,19 @@ public class InputMethodRoot extends LinearLayout {
public InputMethodRoot(Context context, AttributeSet attrs, int defStyle) { public InputMethodRoot(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs); super(context, attrs);
setWillNotDraw(false);
mGuardPaint.setColor(context.getResources()
.getColor(com.android.internal.R.color.input_method_navigation_guard));
} }
@Override @Override
protected boolean fitSystemWindows(Rect insets) { protected boolean fitSystemWindows(Rect insets) {
setPadding(0, 0, 0, insets.bottom); if (mNavigationGuard == null) {
mNavigationGuard = findViewById(com.android.internal.R.id.navigationGuard);
}
if (mNavigationGuard == null) {
return super.fitSystemWindows(insets);
}
ViewGroup.LayoutParams lp = mNavigationGuard.getLayoutParams();
lp.height = insets.bottom;
mNavigationGuard.setLayoutParams(lp);
return true; return true;
} }
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw navigation bar guard
final int w = getMeasuredWidth();
final int h = getMeasuredHeight();
mGuardRect.set(0, h - getPaddingBottom(), w, h);
canvas.drawRect(mGuardRect, mGuardPaint);
}
} }

View File

@@ -52,4 +52,9 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone"> android:visibility="gone">
</FrameLayout> </FrameLayout>
<View android:id="@+id/navigationGuard"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@+color/input_method_navigation_guard"/>
</com.android.internal.inputmethod.InputMethodRoot> </com.android.internal.inputmethod.InputMethodRoot>

View File

@@ -105,6 +105,7 @@
<java-symbol type="id" name="month" /> <java-symbol type="id" name="month" />
<java-symbol type="id" name="month_name" /> <java-symbol type="id" name="month_name" />
<java-symbol type="id" name="name" /> <java-symbol type="id" name="name" />
<java-symbol type="id" name="navigationGuard" />
<java-symbol type="id" name="next" /> <java-symbol type="id" name="next" />
<java-symbol type="id" name="next_button" /> <java-symbol type="id" name="next_button" />
<java-symbol type="id" name="new_app_action" /> <java-symbol type="id" name="new_app_action" />

View File

@@ -2992,7 +2992,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pf.top = df.top = of.top = cf.top = vf.top = mDockTop; pf.top = df.top = of.top = cf.top = vf.top = mDockTop;
pf.right = df.right = of.right = cf.right = vf.right = mDockRight; pf.right = df.right = of.right = cf.right = vf.right = mDockRight;
// IM dock windows layout below the nav bar... // IM dock windows layout below the nav bar...
pf.bottom = df.bottom = of.bottom = mRestrictedScreenTop + mRestrictedScreenHeight; pf.bottom = df.bottom = of.bottom = mUnrestrictedScreenTop + mUnrestrictedScreenHeight;
// ...with content insets above the nav bar // ...with content insets above the nav bar
cf.bottom = vf.bottom = mStableBottom; cf.bottom = vf.bottom = mStableBottom;
// IM dock windows always go to the bottom of the screen. // IM dock windows always go to the bottom of the screen.