14

Tôi muốn tạo nút có trình đơn thả xuống, như nút menu mục bổ sung trong ActionBar trên ICS. Tôi có vấn đề bởi vì PopupMenu không có trong android 2.x. Cách thứ hai sử dụng Spinner nhưng nó không phải cho tôi, bởi vì Spinner luôn hiển thị mục đầu tiên trên nền tùy chỉnh của tôi hoặc mục đã chọn của tôi. Làm thế nào tôi có thể đạt được nó? Nói chung, tôi muốn ContextMenu nhưng ít và trên vị trí nhấp vào xem. Cảm ơn.Cách tốt nhất để tạo menu thả xuống trong android 2.x như trong ICS

Nó trông như thế này: Overflow menu in right top corner

Trả lời

11

Nếu mục đích của bạn là tạo lại một thanh tác vụ, bạn có thể xem dự án ActionBarSherlock, trong đó backport có chức năng.

Nếu bạn muốn có thể bật trình đơn như vậy ở bất kỳ đâu trong ứng dụng, bạn có thể đọc triển khai thực hiện lớp MenuPopupHelper trong mã nguồn dự án ActionBarSherlock.

+0

Ok. Tôi nghĩ câu trả lời tốt nhất là của bạn. Nhưng tôi quyết định rằng tôi sẽ chỉ sử dụng menu ngữ cảnh vì tôi không thấy cách đơn giản để sử dụng popupMenu. –

1

Một thay thế cho yêu cầu của bạn có thể, bạn nên tạo một danh sách xem ,, vị trí của nó dưới nút của bạn & thiết lập nó là tầm nhìn đến vô hình theo mặc định & khi bạn click vào nút bạn có thể chuyển đổi tầm nhìn của listview .... ví dụ

button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (LISTVIEW.isShown()) { 
        LISTVIEW.setVisibility(View.INVISIBLE); 
       } else { 
        LISTVIEW.setVisibility(View.VISIBLE); 
       } 

cho tôi biết nếu điều này giúp ...

+0

Đó là cách tuyệt vời để thực hiện. Bạn có thể kiểm soát vị trí của ListView không? – Andy

+0

Bạn có thể định vị nó bất cứ nơi nào bạn muốn, nhưng tôi đoán bạn sẽ cần phải mã hóa kích thước của nó. –

3

Tôi sử dụng PopupWindow cho loại điều đó. Đó là công việc nhiều hơn một PopupMenu, nơi bạn chỉ cần cung cấp cho nó một Menu và trả lời các sự kiện với OnMenuItemClickListener.onMenuItemClick(). Với PopupWindow, bạn cung cấp nội dung Xem và xử lý các nhấp chuột ở cấp độ hơi thấp hơn.

Tuy nhiên, công việc được thực hiện mà không gặp quá nhiều rắc rối. Phương thức showAsDropDown() cho phép bạn neo cửa sổ bật lên đến một Chế độ xem khác (đặt vị trí thích hợp dưới dạng menu thả xuống hoặc menu bật lên), giống như bạn muốn. Nó đã được khoảng từ cấp API 1 và hoạt động tuyệt vời cho tôi trên tất cả các thiết bị thử nghiệm của tôi.

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