onprepareoptionsmenu item getmenu from change activity android layout menuitem

getmenu - Android MenuItem Diseño personalizado



invalidate menu android (1)

Tengo un PopupMenu que aparece cuando hago clic en un botón de acción en una barra de acciones. Me gustaría MenuItem, en mi PopupMenu, con un diseño personalizado como este:

layout / menu_item_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/menuItemLayout" android:orientation="horizontal" > <ImageView android:id="@+id/imageViewMenuItem" android:layout_width="20dip" android:layout_height="20dip" android:src="@drawable/abc_list_focused_holo" /> <TextView android:id="@+id/textViewMenuItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextViewMenuItem" /> </LinearLayout>

Este es el xml de PopUpMenu:

menu / pop_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context="apparound.actiobarpopupstylefacebook.Main" > <item android:id="@+id/popupItem" android:showAsAction="ifRoom"/> </menu>

En mi código de actividad está siguiendo:

public void showPopup(int idR){ View menuItemView = findViewById(idR); PopupMenu popup = new PopupMenu(this, menuItemView); MenuInflater inflate = popup.getMenuInflater(); inflate.inflate(R.menu.pop_menu, popup.getMenu()); MenuItem menuItem= popup.getMenu().findItem(R.id.popupItem); menuItem.setActionView(R.layout.menu_item_layout); popup.show(); }

Pero cuando aparece popupmenu, el artículo está vacío. Me equivoqué al usar el método setActionview ()? Gracias.


Para diseños personalizados no puede usar un menú, una opción alternativa es una ventana emergente

PopupWindow popupwindow_obj = popupDisplay(); popupwindow_obj.showAsDropDown(clickbtn, -40, 18); // where u want show on view click event popupwindow.showAsDropDown(view, x, y); public PopupWindow popupDisplay() { final PopupWindow popupWindow = new PopupWindow(this); // inflate your layout or dynamically add view LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.mylayout, null); Button item = (Button) view.findViewById(R.id.button1); popupWindow.setFocusable(true); popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popupWindow.setContentView(view); return popupWindow; }

Cree este archivo XML en la carpeta res / layout llamada my layout.xml

<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Window test" /> </LinearLayout>