Android: Как сделать все элементы внутри LinearLayout того же размера?
Я хотел бы создать диалог для отображения заголовка и тегов видео. Ниже текста я хотел бы добавить кнопки View, Edit и Delete и сделать эти элементы одинаковыми. Кто-нибудь знает, как изменить файл макета .xml, чтобы сделать элементы внутри LinearView одинакового размера?
Текущий файл макета выглядит следующим образом:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTitle" android:text="[Title]" >
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTags"
android:text="[Tags]" >
</TextView>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnPlay"
android:text="View">
</Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnEdit"
android:text="Edit">
</Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnDelete"
android:text="Delete">
</Button>
</LinearLayout>
</LinearLayout>
Я был бы признателен, если бы кто-нибудь смог показать решение, изменив вложенное содержимое файла.
Спасибо!
Ответы
Ответ 1
Используйте android:layout_width="0px"
и android:layout_weight="1"
для трех Button
s. Это говорит о том, что кнопки должны занимать не более 0 пикселей, но три из них должны разделить любое дополнительное пространство между ними. Это должно дать вам визуальный эффект, который вы пожелаете.
Ответ 2
Другим способом является создание android:layout_width="fill_parent"
и android:layout_weight="1"
, это также отлично работает.
Ответ 3
Используйте LinearLayout с вашим желаемым weightSum и создайте элементы с равным layout_weight. Вот пример...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="5">
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_share_white_36dp"/>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_search_white_36dp"/>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_event_note_white_36dp"/>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_brush_white_36dp"/>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_menu_white_36dp"/>
</LinearLayout>
Итак, весовая сумма всех элементов равна 5. Вот скриншот...
![enter image description here]()
Обратите внимание, что используются значки Google Material Design. Надеюсь, что это будет полезно.
Ответ 4
Я написал EqualSpaceLayout, который, я думаю, решит вашу проблему. Это похоже на LinearLayout, но оно не искажает размер дочерних представлений. Проверьте это: http://www.dev-smart.com/archives/225