Wrap_content view inside a ConstraintLayout stretches outside the screen
Outdated: See better answer
No, you cannot do what you want with ConstraintLayout as it is today (1.0 beta 4):
wrap_content
only asks the widget to measure itself, but won't limit its expansion against eventual constraintsmatch_constraints
(0dp) will limit the size of the widget against the constraints... but will match them even ifwrap_content
would have been smaller (your first example), which isn't what you want either.
So right now, you are out of luck for that particular case :-/
Now... we are thinking about adding extra capabilities to match_constraints
to deal with this exact scenario (behaving as wrap_content
unless the size ends being more than the constraints).
I cannot promise that this new feature will make it before the 1.0 release though.
Edit: we did add this capability in 1.0 with the attribute app:layout_constraintWidth_default="wrap"
(with width set to 0dp). If set, the widget will have the same size as if using wrap_content, but will be limited by constraints (i.e. it won't expand beyond them)
Update Now those tags are deprecated, instead use layout_width="WRAP_CONTENT" and layout_constrainedWidth="true".
Updated (ConstraintLayout 1.1.+)
Use app:layout_constrainedWidth="true"
with android:layout_width="wrap_content"
Previously (deprecated):
app:layout_constraintWidth_default="wrap"
with android:layout_width="0dp"