2009-07-24 2 views
69

Я хотел бы создать диалог для отображения заголовка и тегов видео. Ниже текста я хотел бы добавить кнопки View, Edit и Delete и сделать эти элементы одинаковыми. Кто-нибудь знает, как изменить файл макета .xml, чтобы сделать элементы внутри LinearView одинакового размера?Android: Как сделать все элементы внутри LinearLayout того же размера?

Текущий файл макета выглядит следующим образом:

<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> 

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

Спасибо!

ответ

148

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

+4

Если вы _REALLY_ хотели, чтобы вы могли использовать TableLayout с android: stretchColumns = "0,1,2". –

+0

Awesome ... так что это означает, что если мы поместим ширину как 0px, вес переопределит настройки? Почему это так? – noob

+0

Это работало просто отлично. – Proverbio

28

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

+13

Вы действительно были в восторге от этого ответа. :-) Любите энтузиазм! –

+0

Решение CommonsWare не сработало для меня, но это было сделано! :) Я использовал «match_parent», так как я слышал, что вам следует предпочесть его «fill_parent», но оба работают. – codepleb

1

Я написал EqualSpaceLayout, который, я думаю, решит вашу проблему. Это похоже на LinearLayout, но оно не искажает размер дочерних представлений. Проверьте: http://www.dev-smart.com/archives/225

16

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

Смежные вопросы