Update custom view width calculation for TextViews #686
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Resolved missing horizontal padding when calculating width for custom layouts.
Details
When showing a Balloon with a custom layout, the custom view tree is walked and checked for instances of
TextView
.Any
TextView
widgets, and by extension, descendants ofTextView
(e.g.,Button
), has its text measured for calculating width.The measurement heuristics adds horizontal padding while using compound drawables, but not otherwise. This works great when a custom layout's
TextView
has no horizontal padding, but constrains text when horizontal padding is present.Since padding is inside the bounds of the
TextView
, we would like the resultingmaxWidth
calculation to contain this extra space information to render the full text.Here are some example screenshots showing the behavior with and without horizontal padding, before and after this PR's changes:
Before changes with zero horizontal padding
Before changes with 10dp
paddingHorizontal
After changes with 10dp
paddingHorizontal
Reproduction steps
where
custom_layout
is:Note: can also use
padingLeft
/paddingStart
andpaddingRight
/paddingEnd
to demonstrate the issue.Resolution
Add overall horizontal compound padding to TextView's
maxWidth
measurement always. Also updated theBalloon#measureTextWidth
kdoc.