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.

6
  • 1
    As per my knowledge, I don't think that's possible. Commented Mar 21, 2016 at 14:25
  • can I inflate a custom linear layout which has an image and a text view for each menu item ? Commented Mar 21, 2016 at 14:30
  • 1
    stackoverflow.com/questions/15580111/… Commented Mar 21, 2016 at 14:30
  • 1
    Yes, I suppose. Read this: stackoverflow.com/a/26259527/4350275 Commented Mar 21, 2016 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);} Commented Mar 21, 2016 at 15:04

1 Answer 1

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);
    }
Sign up to request clarification or add additional context in comments.

2 Comments

Post this as an edit to your question, not as an answer (unless it answers your question)
I posted the answer of my question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.