Android: Làm thế nào để làm cho tất cả các phần tử bên trong LinearLayout có cùng kích thước?


80

Tôi muốn tạo một hộp thoại để hiển thị tiêu đề video và các thẻ. Văn bản dưới đây, tôi muốn thêm các nút Xem, Chỉnh sửa và Xóa và làm cho các phần tử này có cùng kích thước. Có ai biết cách sửa đổi tệp bố cục .xml để làm cho các phần tử bên trong LinearView có cùng kích thước không?

Tệp bố cục hiện tại trông giống như sau:

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

Tôi sẽ đánh giá cao nếu ai đó có thể chỉ ra giải pháp bằng cách sửa đổi nội dung tệp đã dán.

Cảm ơn!

Câu trả lời:


172

Sử dụng android:layout_width="0px"android:layout_weight="1"trên ba Buttons. Điều đó nói rằng các nút không được chiếm quá 0 pixel, nhưng ba trong số chúng sẽ chia ra bất kỳ khoảng trống thừa nào giữa chúng. Điều đó sẽ mang lại cho bạn hiệu ứng hình ảnh mà bạn mong muốn.


4
Nếu bạn THỰC SỰ muốn, bạn có thể sử dụng TableLayout với android: stretchColumns = "0,1,2".
Jeremy Logan

Tuyệt vời ... vậy điều này có nghĩa là, nếu chúng ta đặt chiều rộng là 0px, trọng lượng sẽ ghi đè cài đặt? Tại sao nó như vậy?
noob

Điều này không hoạt động nếu các Nút của bạn ở trong một GridLayout. Trong trường hợp này, chúng thực sự trở nên 0pxrộng rãi. Có lẽ GridLayoutkhông chấp nhận layout_weight?
Zelphir Kaltstahl

@Zelphir: GridLayoutchắc chắn không sử dụng layout_weight. Điều đó chỉ được sử dụng bởi LinearLayout, và có lẽ một số lớp con của LinearLayout.
CommonsWare

33

Một cách khác là thực hiện android:layout_width="fill_parent"android:layout_weight="1"điều này cũng sẽ hoạt động tốt !!!


18
Bạn đã thực sự vui mừng về câu trả lời này. :-) Yêu thích sự nhiệt tình!
Oh Danny Boy,

Giải pháp của CommonsWare không phù hợp với tôi, nhưng điều này đã làm được! :) Tôi đã sử dụng "match_parent" vì tôi nghe nói rằng bạn nên thích nó hơn "fill_parent", nhưng cả hai đều hoạt động.
codepleb

Các LinearLayout mẹ của những yếu tố phải có cũng layout_width = "match_parent" .
Patapoom

19

Sử dụng LinearLayout với mong muốn của bạn weightSum và tạo các yếu tố với nhau layout_weight . Đây là một ví dụ ...

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

Vì vậy, tổng trọng lượng của tất cả các phần tử là 5. Đây là ảnh chụp màn hình ...

nhập mô tả hình ảnh ở đây

Lưu ý rằng, các biểu tượng Thiết kế Vật liệu của Google được sử dụng. Hy vọng điều này là hữu ích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.