Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create Popup Menu as submenu of another Popup Menu's menu item

I want to create popup menu submenu of another popup menu's menu item.Like below:

enter image description here

Advance Thanks

like image 866
Bhavinkumar Patel Avatar asked Jan 11 '16 09:01

Bhavinkumar Patel


People also ask

Which method is used to add submenu in main menu?

To add menu items and submenus to a JMenu , you use the add(JMenuItem) method.

What is menu explain how do you create popup menu?

A PopupMenu displays a Menu in a popup window anchored to a View. The popup will be shown below the anchored View if there is room(space) otherwise above the View. If any IME(Input Method Editor) is visible the popup will not overlap it until the View(to which the popup is anchored) is touched.

What is submenu menu?

Definition of submenu : a secondary menu (as in a computer application) : a list of choices that is part of another list of choices On selecting one of these sections, students should then be presented with a submenu which lists specific options related to the selected topic.—


2 Answers

It is better to use navigation drawer rather then menu list. In your case you have sub menus & you are working on it. So you can refer below link:
http://www.karthikk.co.vu/2015/03/android-navigation-drawer-with-submenu.html

And If you want exact above then you can refer below link for sub menus:
https://www.packtpub.com/books/content/android-30-application-development-managing-menus
like image 129
Kuldeep Kulkarni Avatar answered Sep 18 '22 11:09

Kuldeep Kulkarni


Step 1 : Main.xml

You can use either list view or any other Composite listviews:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:orientation="vertical"
    >
  <ListView
      android:id="@+id/listView1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
  </ListView>

  </LinearLayout>

Step 2 : listviewchild.xml

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="15dp"        
    android:layout_toRightOf="@+id/textview_name"
    android:src="@drawable/ic_launcher" />   

Step 3 :

String popUpContents[];
PopupWindow popupWindowDogs;   
ListView listView1;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView1=(ListView)findViewById(R.id.listView1);
    listView1.setAdapter(new MyAddapter(MainActivity.this)); // binding the list view.
    /*
     * initialize pop up window items list
     */

    // add items on the array dynamically
    // format is Company Name:: ID
    List<String> dogsList = new ArrayList<String>();
    dogsList.add("Samsung");
    dogsList.add("Google");
    dogsList.add("Yahoo");
    dogsList.add("Microsoft");

    // convert to simple array
    popUpContents = new String[dogsList.size()];
    dogsList.toArray(popUpContents);

    /*
     * initialize pop up window
     */
    popupWindowDogs = popupWindowDogs();


}

/*
 * 
 */
public PopupWindow popupWindowDogs() {

    // initialize a pop up window type
    PopupWindow popupWindow = new PopupWindow(this);

    // the drop down list is a list view
    ListView listViewDogs = new ListView(this);

    // set our adapter and pass our pop up window contents
    listViewDogs.setAdapter(dogsAdapter(popUpContents));

    // set the item click listener
    listViewDogs.setOnItemClickListener(new DogsDropdownOnItemClickListener());

    // some other visual settings
    popupWindow.setFocusable(true);
    popupWindow.setWidth(250);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

    // set the list view as pop up window content
    popupWindow.setContentView(listViewDogs);

    return popupWindow;
}

/*
 * adapter where the list values will be set
 */
private ArrayAdapter<String> dogsAdapter(String dogsArray[]) {

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dogsArray) {

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            // setting the ID and text for every items in the list

            String text = getItem(position);               

            // visual settings for the list item
            TextView listItem = new TextView(MainActivity.this);

            listItem.setText(text);
            listItem.setTag(position);
            listItem.setTextSize(22);
            listItem.setPadding(10, 10, 10, 10);
            listItem.setTextColor(Color.WHITE);

            return listItem;
        }
    };

    return adapter;
}

}

Step 4:

    Context rContext;
    private LayoutInflater rInflater;
    private Activity activity;

    public MyAddapter(Context c) {

        rInflater = LayoutInflater.from(c);

        rContext = c;

    }      

    public MyAddapter(Activity imagebinding) {
        // TODO Auto-generated constructor stub

        activity = imagebinding;        

        rContext = imagebinding;
        rInflater = LayoutInflater.from(imagebinding);
        rContext = imagebinding;
        rInflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);



    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub    


        return 10;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int position, View convertView,
            ViewGroup parent) {
        // TODO Auto-generated method stub
        convertView = rInflater.inflate(R.layout.child, null);
        final MyDat mydat = new MyDat();    

        mydat.imageView1=(ImageView)convertView.findViewById(R.id.imageView1);
        mydat.imageView1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                popupWindowDogs.showAsDropDown(v, -5, 0);

            }
        });

        return convertView;
    }

    class MyDat {        


        ImageView imageView1;           

    }

Step 5 :

@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) {

    // get the context and main activity to access variables
    Context mContext = v.getContext();
    MainActivity mainActivity = ((MainActivity) mContext);

    // add some animation when a list item was clicked
    Animation fadeInAnimation = AnimationUtils.loadAnimation(v.getContext(), android.R.anim.fade_in);
    fadeInAnimation.setDuration(10);
    v.startAnimation(fadeInAnimation);

    // dismiss the pop up
    mainActivity.popupWindowDogs.dismiss();

    // get the text and set it as the button text

    Toast.makeText(mContext, "Selected Positon is: " + arg2, 100).show();


}
like image 32
Ajin kumar Avatar answered Sep 21 '22 11:09

Ajin kumar