2012-04-12 54 views
34

Tôi đã tạo một ứng dụng Android có ListView. Tôi đã thêm cả đầu trang và chân trang vào danh sách. Nhưng khi thêm một dải phân cách/dấu phân cách, nó cũng tạo ra một khoảng trống giữa đầu trang và mục ListView đầu tiên. Nó làm tương tự cho mục ListView cuối cùng và chân trang.Khoảng trống giữa tiêu đề listview và mục đầu tiên

Không gian trống tương đương với kích thước của dải phân cách giữa tất cả các mục ListView, với sự khác biệt mà nó không vẽ dải phân cách và chỉ để trống khoảng trống. Tôi nghĩ rằng tôi đã tìm thấy giải pháp với thuộc tính xml 'Ngăn chia chân được bật' và 'Kích thước bộ chia đầu trang được bật'. Nhưng khi đặt chúng thành sai, nó không thay đổi gì cả. Tôi thậm chí đã cố gắng đặt chúng theo lập trình với

list.setFooterDividerEnabled(false); 
list.setHeaderDividerEnabled(false); 

Nhưng nó không hoạt động. Bất kỳ cách nào để khắc phục vấn đề đó? Tôi chỉ không muốn không gian trống ở đó, tôi muốn mục đầu tiên phù hợp chính xác với tiêu đề (tương tự cho phần chân trang).

+0

Bạn có thể đăng một số XML hoặc mã bố cục không? –

+0

Bạn có giải pháp nào không? –

+1

Có những điều sau đây giúp bạn? http://stackoverflow.com/questions/4961999/remove-bottom-divider-of-a-android-listview – Xebozone

Trả lời

-3

Chỉ cần làm

list.setDividerHeight(0)

Điều đó sẽ chăm sóc nó.

+0

Đây không phải là câu trả lời. Làm như vậy có nghĩa là tất cả các bộ chia đều biến mất, đó không phải là điều tôi muốn. – Niles11

1

tôi đã cố gắng solution và nó hoạt động (mã dựa trên pulltorefresh) của anh chàng này:

layout xml (header.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <RelativeLayout 
     android:id="@+id/content" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <ProgressBar 
      style="@android:style/Widget.ProgressBar.Small.Inverse" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_margin="16dp" 
      android:layout_marginTop="2dp" /> 
    </RelativeLayout> 
</LinearLayout> 

quan điểm khi tạo:

m_headerView = inflater.inflate(R.layout.header, this, false); 

nếu bạn muốn hiển thị, hãy thực hiện điều này:

m_headerView.setPadding(0, 0, 0, 0); 
m_headerView.setVisibility(View.VISIBLE); 

nếu bạn muốn ẩn nó, làm như sau:

m_headerView.setPadding(0, -1000, 0, 0); 
m_headerView.setVisibility(View.GONE); 

nó hoạt động hoàn hảo trong project.hope của chúng tôi nó hữu ích.

+0

Giải pháp của bạn ẩn toàn bộ tiêu đề, nhưng đây không phải là những gì mà OP yêu cầu. –

+0

vâng, đúng vậy. Tôi không hiểu câu hỏi rất rõ ràng. những gì tôi đã gặp là thậm chí ẩn headview (thiết lập như đi), headview vẫn chiếm một không gian trống, tôi tìm thấy một giải pháp trên web. Có lẽ nó không phải là câu hỏi, nhưng tôi nghĩ nó vẫn hữu ích cho một số người khác :) – lucian

5

Tôi tình cờ gặp phải vấn đề tương tự, nhưng trong một tình huống hơi khác so với trường hợp của bạn. My ListView có tiêu đề (hộp tìm kiếm), nhưng mục đầu tiên bên dưới chứa tiêu đề phần (ngày hoặc thư) thay vì là mục danh sách thông thường (với nội dung thực tế dưới dạng hình ảnh, một số văn bản, và vân vân). Vì vậy, tôi muốn không thể chọn được, vì vậy trong bộ điều hợp tùy chỉnh của tôi, tôi đã ghi đè areAllItemsEnabled để trả lại false.

Sai lầm lớn, bởi vì đó chính xác là thủ phạm. Xem, có vẻ như, theo thiết kế, việc triển khai ListViewonly draw dividers between two enabled items, nhưng vẫn giữ khoảng trống cho các ngăn giữa một mục được bật và một mục bị vô hiệu hóa ngay cả khi các ngăn chia đó sẽ không được vẽ. Thực tế đây là một quyết định thiết kế có ý thức không có nghĩa là nó không ngu ngốc, tất nhiên. Điều kỳ lạ nhất, chính sách chia ngăn này chỉ dựa trên giá trị được trả về bởi areAllItemsEnabled thay vì các giá trị được trả về bằng một lần gọi tới isEnabled cho các mục tiếp theo.

Vì vậy, để giải quyết vấn đề này, tôi chỉ phải trả lại true từ areAllItemsEnabled (Tôi đã giữ phương thức ghi đè và thêm nhận xét về vấn đề này, nếu không tôi sẽ không thể nhớ nó trong một tháng): lo Kìa, không gian trắng biến mất, được thay thế bằng một dải phân cách.Bây giờ, nếu tôi muốn hiển thị tiêu đề ListView và tiêu đề phần đầu tiên là chính xác liền kề, tôi chỉ cần chọn màu chia cũng giống như màu tiêu đề phần.

Thực sự hy vọng đó là trường hợp tương tự như của bạn hoặc giải pháp của tôi giúp bạn theo một cách khác.

0

Trong phương pháp getview, bạn có thể kiểm tra xem mục đó là đầu tiên hay cuối cùng và đặt trình chỉnh sửa tùy chỉnh sẽ có chiều cao 0 hoặc chiều cao pixel đơn trong màu trong suốt.

0

goto các thuộc tính ListView trong bố cục android và tìm kiếm khoảng cách thẻ ... một số cách trong android, khi tạo bố cục mới, mặc định nó sẽ tạo khoảng cách tiêu đề và các thuộc tính đường viền. kiểm tra xem nó, nếu nó có sẵn sau đó loại bỏ nó

0

Không tìm thấy một giải pháp tuyệt vời.

Đặt dividerHeight="0dp" và tạo bộ chia của riêng theo cách thủ công - trực tiếp trong XML bố cục hoặc động trong bộ điều hợp nếu bạn cần kiểm soát chính xác hơn.

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