2011-07-27 70 views
16

Tôi gặp sự cố với LinearLayout trên Android. Tôi có bốn nút. Mỗi nút có kích thước cố định, nhưng văn bản có thể khác nhau về độ dài.LinearLayout - Theo chiều dọc không căn chỉnh

Vấn đề của tôi là chúng không phù hợp với phần trên cùng của mỗi phần. Họ thấy được sắp xếp với đầu của văn bản bên trong mỗi botton mà thay đổi tùy thuộc vào số lượng các dòng có bên trong nút (Xem hình).

Ngoài ra, tôi muốn tiếp tục sử dụng LinearLayout vì cuối cùng tôi sẽ sử dụng mã sẽ thêm các nút dựa trên dữ liệu từ cơ sở dữ liệu.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> 
      <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
     </LinearLayout> 

</LinearLayout> 

http://i.imgur.com/0Kj8h.png

EDIT: ĐÁP (Không thể trả lời câu hỏi của riêng tôi):

Ok, tôi chỉ tìm thấy câu trả lời của bản thân mình. Bạn phải thêm android: baselineAligned = "false" vào LinearLayout hoặc bất kỳ điều khiển tương tự nào khác có thể hiển thị cùng một hành vi.

Bạn cũng có thể sửa lỗi này trong trình thiết kế giao diện người dùng bằng nút có tên "Chuyển đổi căn chỉnh đường cơ sở".

Vì vậy, các mã kết quả là:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
     <LinearLayout android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent"> 
      <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
      <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button> 
     </LinearLayout> 

</LinearLayout> 
+0

Cảm ơn lời khuyên về android: baselineAligned = "false", nó cũng cố định vấn đề của tôi :-) –

Trả lời

0

Vâng bố trí tuyến tính thứ hai của bạn là whats tạo những rắc rối Tôi đoán cho u, chỉ cần loại bỏ

+0

Tôi cần giữ nó vì sẽ có những thứ khác xung quanh nó như tiêu đề, nhưng điểm tốt. – darkzangel

1

nó tốt hơn để sử dụng RelativeLayout cho loại như vậy của sự liên kết, như khái niệm của RelativeLayout nói rằng nó "tham chiếu" của một điều khiển

0

Bạn có thể sử dụng TableLayout thay cho LinearLayout thứ hai của bạn. Và thêm một TableRow bên trong TableLayout và trong hàng thêm bốn nút

+0

TableLayout thực hiện tương tự nếu bạn đặt tất cả các mục của mình vào cùng một ô. Ngoài ra, như tôi đã nói tôi muốn ở lại với LinearLayout bởi vì tôi cuối cùng sẽ thêm một số không rõ của nút bằng mã. Tôi không biết những gì sẽ được hiển thị trong các nút, vì vậy tôi cần phải giữ một cách đơn giản để hiển thị chúng như một dòng chảy. Ngoài ra, nó sẽ tự động điều chỉnh khi xoay màn hình. – darkzangel

Các vấn đề liên quan