2011-10-09 33 views
5

Tôi đã xem hầu hết các câu hỏi về chủ đề này và dường như không có câu trả lời dứt khoát. Tôi có ba spinners trong các hàng khác nhau của một cái nhìn bảng. Sử dụng thuộc tính trọng số, các ô trong bảng và, do đó, các trình quay và lượt xem văn bản đều có cùng chiều rộng.Android: Giảm chiều rộng của hộp thả xuống của một spinner

Tuy nhiên, khi một trình quay được nhấn, danh sách thả xuống xuất hiện ở độ rộng đầy đủ và bao phủ toàn bộ bảng. Phải có cách hạn chế chiều rộng của danh sách. Nó chỉ giữ một số với tối đa là 4 chữ số sau khi tất cả.

Tôi đã thấy một ghi chú trên R.attr.dropDownWidth trông giống như nó có thể giúp nhưng tôi không có ý tưởng làm thế nào để thực hiện phương pháp này, hãy để một mình nếu nó thực sự sẽ làm việc.

Bất kỳ trợ giúp nào về phương pháp này hoặc phương pháp khác sẽ hạn chế chiều rộng của trình đơn thả xuống xuống khoảng 100 lần nhúng sẽ thực sự được đánh giá cao - đặc biệt nếu mã mẫu được bao gồm.

Cảm ơn,

Alan ...

Trả lời

5

Tuy nhiên, khi một spinner được nhấp, danh sách thả xuống xuất hiện ở toàn bộ chiều rộng và bao gồm toàn bộ bảng.

Đó là bởi vì nó thực sự là một hộp thoại bật lên.

Phải có cách hạn chế chiều rộng của danh sách.

Điều này rất khó, vì bạn không phải là người tạo hộp thoại. Tôi thậm chí không thấy làm thế nào bạn có thể thực hiện điều này bằng cách mở rộng Spinner với phân lớp của riêng bạn, cho cách Spinner được viết. Bạn có thể phải sao chép mã nguồn Spinner, di chuyển nó sang một gói khác (hoặc tên lớp), và thay đổi performClick() để thay đổi kích thước của AlertDialog bằng cách sử dụng các kỹ thuật được nêu trong How to control the width and height of the default Alert Dialog in Android?.

Và, hãy nhớ rằng hành vi của Spinner có sự khác biệt đáng kể về Honeycomb, và nó vẫn được nhìn thấy nó trông như thế nào trên Ice Cream Sandwich. Chúng tôi không có mã nguồn Honeycomb, vì vậy giải pháp clone-the-class của tôi sẽ cung cấp cho bạn các vấn đề trên các thiết bị mới hơn.

Tôi đã thấy một ghi chú trên R.attr.dropDownWidth trông như thể nó có thể giúp đỡ, nhưng tôi không có ý tưởng làm thế nào để thực hiện phương pháp này, hãy để một mình nếu nó thực sự sẽ làm việc.

Đây không phải là phương pháp, mà là một thuộc tính bạn có thể đặt theo kiểu. Tuy nhiên, dựa trên mã nguồn, có vẻ như điều này chỉ được sử dụng cho trình đơn thả xuống của AutoCompleteTextView.

+0

Xin chào CommonsWare, Vâng, tôi đã đi đến cùng một kết luận và sẽ để lại những thứ như họ đang có. Như bạn nói, tình trạng này có thể khác trong các phiên bản sau, nhưng bây giờ ít nhất, tôi cần phải tương thích ngược. Dù sao cũng cảm ơn bạn. Alan ... –

+0

Sau khi tải lên thiết bị khác, tôi nhận thấy rằng các yếu tố của máy quay và danh sách khá khó chọn. Tôi đã đặt textview trong hàng xml là 'wrap-content' và nó có nghĩa là, nếu chỉ có 1 hoặc 2 ký tự trong tv, bạn phải thực sự nhấn một trong số chúng để chọn hàng. Bằng cách thay đổi thành 'fill_parent', TV sẽ trải dài ngay trên hàng và làm cho việc lựa chọn dễ dàng hơn. Tôi nghĩ rằng điều này có thể giúp đỡ người khác. Lời chúc tốt đẹp nhất, Alan ... –

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