am a017c037: Fix 3306005: NPE at android.widget.TextView.getExtendedPaddingTop()

* commit 'a017c0379c30e0272a88a93d05b6a30e28955b88':
  Fix 3306005: NPE at android.widget.TextView.getExtendedPaddingTop()
This commit is contained in:
Patrick Dubroy
2011-03-09 16:25:11 -08:00
committed by Android Git Automerger
+20 -3
View File
@@ -152,8 +152,14 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca
mPressedOrFocusedBackground = null;
}
if (isFocused()) {
mPressedOrFocusedBackground = createGlowingOutline(
mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor);
if (mLayout == null) {
// In some cases, we get focus before we have been layed out. Set the
// background to null so that it will get created when the view is drawn.
mPressedOrFocusedBackground = null;
} else {
mPressedOrFocusedBackground = createGlowingOutline(
mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor);
}
mStayPressed = false;
invalidatePressedOrFocusedBackground();
}
@@ -190,7 +196,7 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca
destCanvas.save();
destCanvas.translate(-getScrollX() + padding / 2, -getScrollY() + padding / 2);
destCanvas.clipRect(clipRect, Op.REPLACE);
draw(destCanvas);
drawImpl(destCanvas, true);
destCanvas.restore();
}
@@ -265,8 +271,19 @@ public class BubbleTextView extends TextView implements VisibilityChangedBroadca
}
invalidatePressedOrFocusedBackground();
}
@Override
public void draw(Canvas canvas) {
drawImpl(canvas, false);
}
private void drawImpl(Canvas canvas, boolean preventRecursion) {
// If the View is focused but the focused background hasn't been created yet, create it now
if (!preventRecursion && isFocused() && mPressedOrFocusedBackground == null) {
mPressedOrFocusedBackground = createGlowingOutline(
mTempCanvas, mFocusedGlowColor, mFocusedOutlineColor);
}
if (mPressedOrFocusedBackground != null && (isPressed() || isFocused() || mStayPressed)) {
// The blue glow can extend outside of our clip region, so we first temporarily expand
// the canvas's clip region