Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make a horizontal ContextMenu?

I have made an Activity called Accounts and I want to add a horizontal ContextMenu. This may look like the cut, copy and paste options. Is there any way to add this horizontal custom menu onLongClick on the list items?

Here's what I've got so far.

@Override      
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    LayoutInflater inflater = getLayoutInflater().from(this);
    View view = inflater.inflate(R.layout.custom_listview, null, false);
    menu.setHeaderView(view);
    menu.add("Delete");
    menu.add("Edit");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    int position = info.position;
    View v = listView.getChildAt(position);
    TextView typeTv = v.findViewById(R.id.custom_listview_type);
    TextView userTv = v.findViewById(R.id.custom_listview_user);
    TextView passTv = v.findViewById(R.id.custom_listview_password);

    if (item.getTitle().equals("Delete")) {
        db.execSQL("delete from user_added_accounts where accountType = '" + typeTv.getText().toString() + "' and username = '" + userTv.getText().toString() + "';");
        recreate();
    }

    if (item.getTitle().equals("Edit")) {
        update(typeTv.getText().toString(), userTv.getText().toString(), passTv.getText().toString());
    }

    return true;
}

And the current UI looks like this.

Present working condition

Here is something like I want,

enter image description here

like image 344
meditat Avatar asked Feb 06 '18 19:02

meditat


2 Answers

Simply you can achieve by QuickAction library.

https://github.com/piruin/quickaction
https://github.com/lorensiuswlt/NewQuickAction

enter image description here

Hope this will help you!!

like image 81
Hemant Parmar Avatar answered Oct 22 '22 13:10

Hemant Parmar


I think the thing you need is the PopupWindow. Its easier to implement and has its custom layout setting option. The PopupWindow can be set in custom position as you wish and the idea of implementing a sample copy/paste UI that you are thinking of, can be served with the implementation of PopupWindow as well.

I found this answer very informative if you want to implement your situation with PopupWindow instead of implementing it with context menu.

In the above answer that I mentioned and provided a like to, has a PopupWindow which has a TextView only. You might implement any custom/complex UI instead of having a simple TextView like its shown there.

I hope that helps.

Update

As asked in the comment that getting locations of the position of PopupWindow can be set dynamically as well. I am referring to another link, so that you can check the implementation from there as well.

Here's the implementation of using PopupWindow in a list.

like image 25
Reaz Murshed Avatar answered Oct 22 '22 13:10

Reaz Murshed