2015-05-19 16 views
7

Tôi đang tạo ứng dụng Android để tải dữ liệu vào RecyclerView với ImageView bên trong làm nút tràn. Khi người dùng nhấp vào nó, một PopupMenu được hiển thị với các tùy chọn để chọn. Tôi đã xoay xở để thể hiện nó nhưng vị trí này có vẻ không đúng. Hãy nhìn vào các ảnh chụp màn hình.PopupMenu không được định vị đúng cách bên trong RecyclerView

Chỉ hai mục đầu tiên có vẻ OK. Dưới đây là mã nguồn:

view.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    final PopupMenu popupMenu = new PopupMenu(context, view); 
    final Menu menu = popupMenu.getMenu(); 

    popupMenu.getMenuInflater().inflate(R.menu.menu_item_action, menu); 
    popupMenu.setOnMenuItemClickListener(onMenuItemClickListener); 

    switch (Global.listMode) { 
     case Global.LIST_STYLE_NORMAL: { 
     menu.findItem(R.id.action_delete).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_FAVORITE: { 
     menu.findItem(R.id.action_add_to_favorite).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_WATCH_LIST: { 
     menu.findItem(R.id.action_add_to_watch_list).setVisible(false); 
     break; 
     } 
     case Global.LIST_STYLE_DOWNLOAD: { 
     menu.findItem(R.id.action_download).setVisible(false); 
     break; 
     } 
    } 

    itemPosition = (int) view.getTag(R.id.tag_item_position); 
    popupMenu.show(); 
    } 
}); 

Các bạn có thể chỉ cho tôi vấn đề này, tôi đã mất hàng giờ để tìm kiếm nhưng vẫn không tìm thấy gì bây giờ.

P/S: Nút được nhấp được đánh dấu bằng vòng tròn màu đỏ.

Mọi trợ giúp sẽ được đánh giá cao!

+0

Đây là điều tôi đang làm việc cũng như cho một ứng dụng, có bất kỳ mã nào của bạn cho điều này được đăng trong một diễn đàn công cộng như github không? Tôi đang cố gắng để làm cho các mục trình đơn có phần cho họ (IE một hình ảnh bên trái, tên ở giữa, mô tả bên phải) nhưng đang gặp khó khăn trong việc tìm ra cách để làm điều đó. – Silmarilos

Trả lời

10

May mắn thay, tôi vừa tìm thấy cách để giải quyết vấn đề:

  • Sử dụng android.widget.PopupMenu không android.support.v7.widget.PopupMenu
  • Thay final PopupMenu popupMenu = new PopupMenu(context, view); với final PopupMenu popupMenu = new PopupMenu(context, v);

Thành thực mà nói, tôi không biết tại sao, chỉ cần thử nó và thì đấy!

+0

Nhưng tính năng này có hoạt động với apis cũ hơn không? –

+0

Nó hoạt động cho tôi! –

+0

Tài liệu 'PopupMenu' nói" Được sử dụng để viết các ứng dụng chạy trên nền tảng trước Android 3.0. Khi chạy trên Android 3.0 trở lên, việc triển khai này vẫn được sử dụng; nó không cố gắng chuyển sang triển khai khung. " –

1

Tôi không chắc chắn lắm nhưng có vẻ như một vấn đề tương tự đã được giải quyết here và đã có câu trả lời được chấp nhận. Hy vọng nó sẽ giúp bạn với vấn đề của bạn. Chỉ cần vấp phải câu hỏi của bạn và thấy chủ đề được thảo luận trong liên kết và nghĩ rằng nó có thể hữu ích cho bạn.

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