diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java b/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java index 4557b3418e19..500910c910c3 100644 --- a/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java +++ b/packages/SystemUI/src/com/android/keyguard/PinShapeNonHintingView.java @@ -30,6 +30,7 @@ import android.transition.TransitionManager; import android.transition.TransitionValues; import android.util.AttributeSet; import android.util.Log; +import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -51,12 +52,30 @@ public class PinShapeNonHintingView extends LinearLayout implements PinShapeInpu private int mPosition = 0; private final PinShapeAdapter mPinShapeAdapter; private ValueAnimator mValueAnimator = ValueAnimator.ofFloat(1f, 0f); + private Rect mFirstChildVisibleRect = new Rect(); public PinShapeNonHintingView(Context context, AttributeSet attrs) { super(context, attrs); mPinShapeAdapter = new PinShapeAdapter(context); } @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + super.onLayout(changed, l, t, r, b); + if (getChildCount() > 0) { + View firstChild = getChildAt(0); + boolean isVisible = firstChild.getLocalVisibleRect(mFirstChildVisibleRect); + boolean clipped = mFirstChildVisibleRect.left > 0 + || mFirstChildVisibleRect.right < firstChild.getWidth(); + if (!isVisible || clipped) { + setGravity(Gravity.END | Gravity.CENTER_VERTICAL); + return; + } + } + + setGravity(Gravity.CENTER); + } + + @Override public void append() { int size = getResources().getDimensionPixelSize(R.dimen.password_shape_size); ImageView pinDot = new ImageView(getContext()); |