У меня есть GridLayout с 3 ImageView в качестве детей. Для columnCount установлено значение 3, и они должны быть равномерно распределены по горизонтали. Это XML:
<GridLayout
android:id = "@+id/info_contact_layout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "horizontal"
android:columnCount = "3"
android:rowCount = "1">
<ImageView
android:id = "@+id/info_empresa_facebook_contact_id"
android:layout_gravity = "fill"
android:layout_columnWeight = "1"
android:src = "@drawable/ic_warning" />
<ImageView
android:id = "@+id/info_empresa_whatsapp_contact_id"
android:layout_gravity = "fill"
android:layout_columnWeight = "1"
android:src = "@drawable/ic_warning" />
<ImageView
android:id = "@+id/info_empresa_call_id"
android:layout_gravity = "fill"
android:layout_columnWeight = "1"
android:src = "@drawable/ic_warning" />
</GridLayout>
Вместо трех изображений одинаковой ширины, идеально вписывающихся в горизонтальное пространство, я получаю следующее (первое изображение огромно, а другие не видны):
Как я могу равномерно распределить содержимое сетки по горизонтали? Есть 3 столбца, по одному для каждого изображения, а ширина сетки соответствует ширине родительской. Кроме того, это не сработает, если я сниму веса. Размер изображений не имеет значения, они должны соответствовать сетке.
Ваш GridView, как было опубликовано, имеет только одну строку. В этом случае я бы просто использовал LinearLayout:
<LinearLayout
android:id = "@+id/info_contact_layout"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "horizontal">
<ImageView
android:id = "@+id/info_empresa_facebook_contact_id"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:src = "@drawable/ic_warning" />
<ImageView
android:id = "@+id/info_empresa_whatsapp_contact_id"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:src = "@drawable/ic_warning" />
<ImageView
android:id = "@+id/info_empresa_call_id"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_weight = "1"
android:src = "@drawable/ic_warning" />
</LinearLayout>
@EricsonWillians По моему личному опыту, использование GridView всегда неудобно, и почти все было бы лучше (стопка LinearLayout, FlexboxLayout, ConstraintLayout и т. д.).
Это именно то, что я хотел, спасибо. Я не использовал LinearLayout, потому что думал, что Grid даст мне это (я имею в виду, что по определению размер его дочерних элементов не устанавливается вручную). Мне все еще любопытно, как это сделать с помощью GridLayout.