2015-10-05 116 views
-3

如何使用ListPopupWindow实现类似这样的事情?工具栏上的复杂菜单项

enter image description here

我试图让onOptionsItemSelected项目视图实例,因此而在onCreateOptionsMenu它返回null(正如你所看到的注释行):

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.menu_socials, menu); //  The line bellow was returning null 
//  ImageButton view = (ImageButton) menu.findItem(R.id.fake_overflow).getActionView(); 
     listPopupWindow = new ListPopupWindow(
       getContext()); 
     listPopupWindow.setAdapter(new ArrayAdapter(
       getContext(), 
       android.R.layout.simple_expandable_list_item_1, products)); 
     listPopupWindow.setWidth(300); 
     listPopupWindow.setHeight(400); 
     listPopupWindow.setModal(true);  
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     View view = getActivity().findViewById(R.id.fake_overflow); 
//  listPopupWindow.show(); 
     listPopupWindow.setAnchorView(view); 
     listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Log.i("TAG","action click?"); 
       listPopupWindow.dismiss(); 
      } 
     }); 
     return super.onOptionsItemSelected(item); 
    } 
+0

的锚点视图您可以尝试创建自定义弹出菜单 – Aayushi

+0

其新的溢出菜单在新的支持lib appcompat-v7中的新外观。 – Mahalakshmi

回答

1

我会用ListPopupWindow也可在支持库上找到。顾名思义,PopupWindow包装在一个List(View)中,它接受一个Adapter。使用自定义适配器,您应该可以轻松地自定义每行的外观。溢出视图将成为您的ListPopupWindow

+0

我能够改变一个ListPopupWindow,由项目视图中设置它的锚,因为它如下: '\t @覆盖 公共布尔onOptionsItemSelected(菜单项项){ 视图视图= getActivity()findViewById(R.id.fake_overflow ); listPopupWindow.setAnchorView(view); listPopupWindow.show(); return super.onOptionsItemSelected(item); }' – DaniloDeQueiroz

+0

不客气 – Blackbelt