2015-10-05 123 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