Как изменить ширину дочернего элемента FlexBox после его добавления в FlexBox
У нас есть линейный макет с кнопкой и видом (линия, которая отделяет кнопку от других видов). Мы программно добавляем linearLayout к элементу flexBox и устанавливаем для FlexGrow дочернего элемента значение 1f. Проблема в том, что я не могу заставить внутреннюю кнопку соответствовать ширине родительского линейного макета и одновременно установить минимальную ширину.
Когда я устанавливаю ширину кнопок (в xml) равной match_parent, родительский элемент становится размером с текст кнопки (он должен быть на 20% больше в случае изменения текста). В этом случае setMinnimumWidth(), кажется, не влияет.
Но когда я устанавливаю ширину кнопок (в xml) на WrapContent, тогда setMinimumWidth() работает. Кнопка отображается в правильном размере, но родительский элемент намного больше, чем кнопка (предположительно, чтобы заполнить оставшееся пространство в строке flexBox.
Как получить одинаковый размер кнопки и ее родителя, а также установить минимальную ширину?
XML для элемента, который мы добавляем flexbox,
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="16dp"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button_date_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="DATE"
android:gravity="left|center_vertical"
android:background="@android:color/transparent"
android:drawableRight="@drawable/caret"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:paddingTop="2dp"
android:background="@android:color/darker_gray"/>
</LinearLayout>
Код, который добавляет элемент и устанавливает ширину
val button = linearLayout.findViewById(R.id.button_id) as Button
button.width = width
button.minimumWidth = width
flexBox.addView(linearLayout)
val layoutParams = linearLayout.layoutParams
layoutParams.width = width
linearLayout.layoutParams = layoutParams
linearLayout.invalidate()
linearLayout.requestLayout()
код есть в котлине.