Expand / collapse popup menu from action bar icon

I am developing an Android 2.1 API 7 application. I am implementing my action bar using ActionbarSherlock .

My action bar:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/my_option" android:layout_gravity="left" android:src="@drawable/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> 

In my onCreate() activity callback:

  @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); ActionBar actionBar = getSupportActionBar(); View actionBarView = getLayoutInflater().inflate(R.layout.action_bar, null); actionBar.setCustomView(actionBarView); ImageView actionBarImg = (ImageView) actionBarView.findViewById(R.id.my_option); actionBarImg.setOnClickListener(new OnClickListener(){ public void onClick(View view) { //how to pop up a menu which is expand/collapse below the image icon } }); } 

As you see above, there is an image icon ( actionBarImg ) on the action bar layout.

I would like to implement a function that when you click on the image icon with a finger, the pop-up menu will expand under the icon, when the icon is pressed again, the pop-up menu collapses. How to implement this?

+4
source share
2 answers

add variables:

 private PopupWindow mPopupMenu; private View mMenuLayout; private boolean isPopupOpened = false; 

add to onCreate ():

 mMenuLayout = getLayoutInflater().inflate(R.layout.menu_layout, null); mPopupMenu = new PopupWindow(mMenuLayout, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); actionBarImg.setOnClickListener(new OnClickListener() { public void onClick(View view) { if (isPopupOpened) { mPopupMenu.dismiss(); isPopupOpened = false; } else { mPopupMenu.showAsDropDown(actionBarImg); isPopupOpened = true; } } }); 
+2
source

in your onClickListenerView image create this popupWindow and place it under the View image

  actionBarImg.setOnClickListener(new OnClickListener() { public void onClick(View view) { LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.cart_layout, null); PopupWindow pw = new PopupWindow(layout , LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true); // display the popup in the center pw.setOutsideTouchable(true); pw.setBackgroundDrawable(new ColorDrawable(android.R.color.transparent)); pw.setFocusable(true); pw.setTouchInterceptor(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("touch ", "touch"); if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { Log.i("touch outside", "touch outside"); pw.dismiss(); return true; } return false; } }); pw.showAsDropDown(v); } }); 

this will put your popupWindow under your ImageView / button

+2
source

Source: https://habr.com/ru/post/1396369/


All Articles