Oh, did it! I used solution for similar problem (ConstraintLayout Chains and Text Ellipsis + Image on the Right) - it won't help until I excluded Button
from the chain and remove Space
which I used as "spring"!
Here is result - works exactly as in the picture.
<ConstraintLayout
android:layout_width="match_parent"
...>
<TextView
android:id="@+id/text"
android:layout_width="0dp" // enable constraints
android:ellipsize="end"
android:lines="1"
app:layout_constraintHorizontal_chainStyle="packed" // keep text + icon side by side
app:layout_constraintHorizontal_bias="0" // move text + icon to the left
app:layout_constraintWidth_default="wrap" // make text as small to wrap text
app:layout_constraintLeft_toLeftOf="parent" // chain starts
app:layout_constraintRight_toLeftOf="@id/icon" // chain continues
.../>
<ImageView
android:id="@+id/icon"
app:layout_constraintLeft_toRightOf="@id/text" // chain continues
app:layout_constraintRight_toLeftOf="@id/button" // chain ENDS!
.../>
<Button
android:id="@+id/button"
app:layout_constraintRight_toRightOf="parent" // move button to the right
// PAY ATTENTION! There is no constraintLeft_toRightOf="icon" attribute!
// because button must be out of chain
.../>
</ConstraintLayout>