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);
}

The problems with the above code are the following: 1: if is room only the image is displayed 2: if is not room only the text is displayed into a secondary menu

I need to display both image and text if is room and if is not and also I want that the text to be below the image.

aurelianr
  • 538
  • 2
  • 12
  • 35
  • 1
    As per my knowledge, I don't think that's possible. – Prerak Sola Mar 21 '16 at 14:25
  • can I inflate a custom linear layout which has an image and a text view for each menu item ? – aurelianr Mar 21 '16 at 14:30
  • 1
    http://stackoverflow.com/questions/15580111/how-can-i-dynamically-create-menu-items – zgc7009 Mar 21 '16 at 14:30
  • 1
    Yes, I suppose. Read this: http://stackoverflow.com/a/26259527/4350275 – Prerak Sola Mar 21 '16 at 14:32
  • `for (int i = 0; i < packagesViews.size(); i++) { inflater.inflate(R.menu.sumar_client_menu, menu); MenuItem item = menu.findItem(R.id.menuItem); LinearLayout rootView = (LinearLayout)item.getActionView(); ImageView imageView = (ImageView) rootView.findViewById(R.id.imageViewFromMenuItem); imageView.setBackground(Drawable.createFromPath(path)); TextView textView = (TextView) rootView.findViewById(R.id.textViewFromMenuItem); textView.setText(name);}` – aurelianr Mar 21 '16 at 15:04
  • I red it and i still have an issue. – aurelianr Mar 21 '16 at 15:07

1 Answers1

1
@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);
    }
aurelianr
  • 538
  • 2
  • 12
  • 35