it-swarm.com.ru

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>

Буду признателен, если кто-нибудь сможет показать решение, изменив содержимое вставленного файла.

Спасибо!

76
Niko Gamulin

Используйте Android:layout_width="0px" и Android:layout_weight="1" на трех Buttons. Это говорит о том, что кнопки должны занимать не более 0 пикселей, но три из них должны разделить любое дополнительное пространство между ними. Это должно дать вам визуальный эффект, который вы хотите.

167
CommonsWare

Другой способ состоит в том, чтобы сделать Android:layout_width="fill_parent" и Android:layout_weight="1", это также будет отлично работать !!!

32
Eby

Используйте 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 . Надеюсь, это полезно.

18
Madan Sapkota