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