Created
September 1, 2016 05:19
-
-
Save noaht11/e974bda5ec85dd01c13d322890be2efa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void adjustFontMetrics(FontMetricsInt fm) { | |
paint.getFontMetricsInt(fm); | |
int textHeight = fm.descent - fm.ascent; | |
// Break up the vertical spacing in half because half will go above the chip, half will go below the chip | |
int halfSpacing = mChipVerticalSpacing / 2; | |
// Given that the text is centered vertically within the chip, the amount of space above or below the text (inbetween the text and chip) | |
// is half their difference in height: | |
int spaceBetweenChipAndText = (mChipHeight - textHeight) / 2; | |
int textTop = fm.top; | |
int chipTop = fm.top - spaceBetweenChipAndText; | |
int textBottom = fm.bottom; | |
int chipBottom = fm.bottom + spaceBetweenChipAndText; | |
// The text may have been taller to begin with so we take the most negative coordinate (highest up) to be the top of the content | |
int topOfContent = Math.min(textTop, chipTop); | |
// Same as above but we want the largest positive coordinate (lowest down) to be the bottom of the content | |
int bottomOfContent = Math.max(textBottom, chipBottom); | |
// Shift the top up by halfSpacing and the bottom down by halfSpacing | |
int topOfContentWithSpacing = topOfContent - halfSpacing; | |
int bottomOfContentWithSpacing = bottomOfContent + halfSpacing; | |
// Change the font metrics so that the TextView thinks the font takes up the vertical space of a chip + spacing | |
fm.ascent = topOfContentWithSpacing; | |
fm.descent = bottomOfContentWithSpacing; | |
fm.top = topOfContentWithSpacing; | |
fm.bottom = bottomOfContentWithSpacing; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment