2016-03-21 80 views
0
@Override 
public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) { 


    new Thread(new Runnable() { 

     @Override 
     public void run() { 
      AdminSoapService adminSoapService = new AdminSoapService(); 
      final List<String> packageNamesList = adminSoapService.getPackagesFromSumarClientByClientCnp("1840805160041"); 
      String[] packageNames = packageNamesList.toArray(new String[packageNamesList.size()]); 
      packagesViews = SQLMceHelper.getDb(getActivity()).getPackagesByPackageNames(packageNames); 

      getActivity().runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        for (int i = 0; i < packagesViews.size(); i++) { 

         String name = packagesViews.get(i).getName(); 
         String path = packagesViews.get(i).getTileRenderPath(); 
         int id = packagesViews.get(i).getId();       

         MenuItem edit_item = menu.add(Menu.NONE, id , i, name); 
         edit_item.setIcon(Drawable.createFromPath(path)); 
         edit_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
         edit_item.setOnMenuItemClickListener(SCFragment.this); 

        }      
       } 
      }); 


     } 
    }).start(); 

    super.onCreateOptionsMenu(menu, inflater); 
} 

与上面的代码中存在的问题动态和编程添加菜单项如下: 1:如果是仅显示图像室 2:如果没有房间只有文本被显示成次菜单在机器人

我需要显示图像和文本,如果是空间,如果不是,我也希望文本在图像下方。

+1

据我所知,我不认为这是可能的。 –

+0

是否可以为每个菜单项充气具有图像和文本视图的自定义线性布局? – aurelianr

+1

http://stackoverflow.com/questions/15580111/how-can-i-dynamically-create-menu-items – zgc7009

回答

0
@Override 
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) { 

//  for (int i = 0; i < 3; i++) { 
//   MenuItem add = menu.add(0, i, i, "Menu" + i); 
//   add.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
//   add.setActionView(R.layout.action_button_menu_item); 
//   ((TextView)add.getActionView().findViewById(R.id.textViewFromMenuItem)).setText("Menu " + i); 
//   ((ImageView)add.getActionView().findViewById(R.id.imageViewFromMenuItem)).setBackground(Drawable.createFromPath(pathName));; 
//  } 

     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       AdminSoapService adminSoapService = new AdminSoapService(); 
       final List<String> packageNamesList = adminSoapService.getPackagesFromSumarClientByClientCnp("1840805160041"); 
       String[] packageNames = packageNamesList.toArray(new String[packageNamesList.size()]); 
       packagesViews = SQLMceHelper.getDb(getActivity()).getPackagesByPackageNames(packageNames); 

       getActivity().runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         for (int i = 0; i < packagesViews.size(); i++) { 

          String name = packagesViews.get(i).getName(); 
          System.out.println("name " + name); 
          String path = packagesViews.get(i).getTileRenderPath(); 
          int id = packagesViews.get(i).getId(); 


          MenuItem add = menu.add(0, id, i, name); 
          add.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
          add.setActionView(R.layout.action_button_menu_item); 
          ((TextView)add.getActionView().findViewById(R.id.textViewFromMenuItem)).setText(name); 
          ((ImageView)add.getActionView().findViewById(R.id.imageViewFromMenuItem)).setBackground(Drawable.createFromPath(path));      
         }      
        } 
       }); 

      } 
     }).start(); 

     super.onCreateOptionsMenu(menu, inflater); 
    } 
+1

发布这个作为你的问题的编辑,而不是一个答案(除非它回答你的问题) – zgc7009

+0

我会这样做谢谢 – aurelianr

+0

我发布了我的问题的答案。 – aurelianr