2016-03-21 5 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); 
} 

Die Probleme mit dem obigen Code sind die folgenden hinzufügen, wenn es Raum nur das Bild angezeigt 2: wenn nicht Raum ist nur der Text in eine sekundäre angezeigt MenüMenüpunkte dynamisch und programmatisch in android

Ich muss sowohl Bild und Text anzeigen, wenn Raum ist und wenn nicht und auch ich möchte, dass der Text unter dem Bild sein.

+1

Soweit ich weiß, ist das nicht möglich. –

+0

kann ich ein benutzerdefiniertes lineares Layout mit einem Bild und einer Textansicht für jeden Menüeintrag aufblasen? – aurelianr

+1

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

Antwort

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

Poste dies als Bearbeitung deiner Frage, nicht als Antwort (es sei denn es beantwortet deine Frage) – zgc7009

+0

werde ich tun Danke – aurelianr

+0

Ich habe die Antwort auf meine Frage gepostet. – aurelianr