2009-09-30 43 views
15

Tôi thực sự kéo tóc ra khỏi cái này. Một số nền. Tôi có một danh sách các mục mà tất cả đều có hộp kiểm bên cạnh chúng. Khi bạn bỏ chọn hộp kiểm, một nút xuất hiện cho phép bạn xóa mục khỏi danh sách. Điều này có vẻ ngược lại lúc đầu nhưng chúng tôi chỉ muốn các mục "đã chọn" đủ điều kiện để xử lý thêm, v.v. Đây là bố cục của tôi:Căn giữa bố cục Android trong RelativeLayout cho ListView tùy chỉnh

<RelativeLayout android:id="@+id/rlBlahBlah" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:minHeight="?android:attr/listPreferredItemHeight" 
       xmlns:android="http://schemas.android.com/apk/res/android"> 
    <CheckBox android:text="" 
      android:id="@+id/cbDeleteItem" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:focusable="false" 
      /> 
    <TextView android:text="" 
      android:id="@+id/tvItemText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="14dip" 
      android:paddingLeft="3dip" 
      android:paddingRight="3dip" 
      android:paddingTop="13dip" 
      android:gravity="fill_vertical" 
      android:layout_toRightOf="@id/cbDeleteItem" 
      /> 
    <Button android:layout_height="wrap_content" 
      android:id="@+id/btnDelete" 
      android:text="Delete" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:gravity="center_vertical" 
      android:focusable="false" 
      /> 
</RelativeLayout> 

Tôi không thể lấy 3 mục để căn giữa theo hàng dọc để tiết kiệm cuộc sống . layout_gravity, gravity, layout_centerVertical, không có thiết bị nào hoạt động. Tôi chắc chắn rằng vấn đề của tôi là một số thiết lập nhỏ để lật một nơi nào đó, nhưng tôi thực sự ở trí thông minh kết thúc về điều này.

chỉnh sửa: Tôi biết chế độ xem văn bản là "fill_vertical", đó là một số nội dung ngẫu nhiên mà tôi đang thử.

+0

Các bạn đã thử chơi xung quanh với việc áp dụng trọng lực thuộc tính đến xem RelativeLayout mẹ? Đáng để thử. – Konklone

Trả lời

24

Vấn đề của bạn có lẽ không phải do sự bố trí, nhưng làm thế nào bạn đang thổi phồng cách bố trí. Trong thực tế, nó thậm chí có thể là lỗi của tôi, tùy thuộc vào nơi bạn đã học được kỹ thuật của bạn ...

Để trích dẫn mặt ở khắp nơi Romain Guy:

sử dụng chính xác thổi phồng() trong adapter là:

inflate (layoutId, parent, false);

Truyền phụ huynh (được cung cấp cho bạn dưới dạng tham số trong getView()) cho phép bộ công cụ giao diện người dùng để tạo đối tượng LayoutParams thích hợp . Chuyển false yêu cầu bộ công cụ KHÔNG gọi parent.addView (theInflateChild), vì ListView sẽ thực hiện phép thuật riêng sau này vào.

Nếu bạn sử dụng inflate(layoutId, null), như tôi có truyền thống tư vấn, cuộc sống là OK, trừ khi bạn hãy thử sử dụng RelativeLayout như cách bố trí cơ sở của các hàng và cố gắng sử dụng định tâm dọc.

Tôi sẽ cập nhật sách của mình và như vậy để phản ánh lời khuyên mới trong những tuần tới.

+0

Tôi đang sử dụng kỹ thuật của bạn: P Tôi cũng đọc một bài đăng từ Romain Guy nói rằng RelativeLayout bỏ qua các thuộc tính layout_gravity. Tôi đang đăng câu trả lời với bố cục mới thực hiện chính xác những gì tôi muốn. Cảm ơn bạn đã phản hồi! – MattC

+0

Cảm ơn, bạn đã cứu ngày của tôi! –

1

Các bạn đã thử android: trọng lực = "center_horizontal" như tham chiếu here

+0

Tôi đang tìm trung tâm dọc trong bố cục. – MattC

+0

Ngoài ra còn có một center_vertical ở đó. – Carnell

+0

trọng tâm tập trung vào các mục trong bản thân như tôi đã tìm thấy. Những gì tôi muốn là layout_gravity, nhưng theo một số bài của Romain Guy mà tôi đọc, RelativeLayout kết thúc bằng cách bỏ qua layout_gravity – MattC

2

Đây là bố cục đã kết thúc thực hiện chính xác những gì tôi muốn. Tôi bỏ RelativeLayout một khi tôi biết rằng nó bỏ qua các thuộc tính layout_gravity (tất nhiên bây giờ tôi không thể tìm thấy bài đăng). Dù bằng cách nào, LinearLayouts lồng nhau đã làm các trick cho tôi:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:id="@+id/llBlahBlahRowMain" 
    android:padding="6dip"> 
    <CheckBox android:text="" 
       android:id="@+id/cbDeleteItem" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:focusable="false" 
       /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" 
     android:layout_gravity="center_vertical" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:text="blah blah dynamically replaced text" 
      android:id="@+id/tvItemText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textSize="14dip" 
      android:paddingLeft="3dip" 
      android:layout_gravity="center_vertical" 
      /> 
    </LinearLayout> 
    <Button android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/btnDelete" 
      android:text="Delete" 
      android:layout_gravity="center_vertical" 
      android:focusable="false" 
      /> 
</LinearLayout> 
16

dùng RelativeLayout, tôi không có may mắn với lực hấp dẫn cũng không layout_gravity.

Nhưng android:layout_centerVertical="true" đã làm việc cho tôi ở vị trí con của RelativeLayout của tôi, vì vậy bạn có thể giữ nó nếu cần.

+0

Bingo! Đã khắc phục sự cố của tôi. Cảm ơn. – user1139880

59

Thuộc tính này làm việc cho tôi tập trung một Button sử dụng RelativeLayout:

android:layout_centerInParent="true" 

Xem gửi bài này: Can you center a Button in RelativeLayout?

+1

Cảm ơn bạn, đôi khi nó thực sự đáng đọc câu trả lời được đánh giá thấp. – tjb

+0

Câu trả lời hay nhất cho điều này tôi đã tìm thấy – Albinoswordfish

+1

Cảm ơn rất nhiều, điều này thực sự nên là câu trả lời được chấp nhận. –

1

Tôi đã làm một giải pháp thay thế, mà làm việc cho tôi. Tôi đặt, trên phần tử hộp văn bản của tôi, thuộc tính android: layout_height = "fill_parent". Bằng cách này, các yếu tố văn bản điền tất cả hieght của cha mẹ, vì vậy các nội dung đã được đặt đúng cách :)

<TextView android:id="@+id/principal_li_descricao" 
    android:layout_height="fill_parent" 
    android:layout_width="wrap_content" 
    android:layout_marginLeft="10dip" 
    android:textColor="#ff000000" 
    android:layout_centerVertical="true" 
    android:gravity="center_vertical" 
    android:layout_alignBottom="@+id/principal_li_icone" 
    android:layout_toRightOf="@+id/principal_li_icone"/> 

Cảm ơn

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