Android MenuItem自定义布局

前端之家收集整理的这篇文章主要介绍了Android MenuItem自定义布局前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我点击操作栏中的操作按钮时,我会显示一个 PopupMenu.
我想在我的PopupMenu中的MenuItem,使用这样的自定义布局:

布局/ menu_item_layout.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:id="@+id/menuItemLayout"
  5.  
  6. android:orientation="horizontal" >
  7.  
  8. <ImageView
  9. android:id="@+id/imageViewMenuItem"
  10. android:layout_width="20dip"
  11. android:layout_height="20dip"
  12. android:src="@drawable/abc_list_focused_holo" />
  13.  
  14. <TextView
  15. android:id="@+id/textViewMenuItem"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:text="TextViewMenuItem" />
  19.  
  20. </LinearLayout>

这是PopUpMenu的xml:

菜单/ pop_menu.xml

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. tools:context="apparound.actiobarpopupstylefacebook.Main" >
  4.  
  5. <item
  6. android:id="@+id/popupItem"
  7. android:showAsAction="ifRoom"/>
  8. </menu>

在我的活动代码如下:

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

但是当弹出菜单出现时,项目为空.
我使用setActionview()方法错误的?
谢谢.

解决方法

对于自定义布局,您不能使用菜单,一个备用选项是 PopupWindow
  1. PopupWindow popupwindow_obj = popupDisplay();
  2. popupwindow_obj.showAsDropDown(clickbtn,-40,18); // where u want show on view click event popupwindow.showAsDropDown(view,x,y);
  3.  
  4. public PopupWindow popupDisplay()
  5. {
  6.  
  7. final PopupWindow popupWindow = new PopupWindow(this);
  8.  
  9. // inflate your layout or dynamically add view
  10. LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  11.  
  12. View view = inflater.inflate(R.layout.mylayout,null);
  13.  
  14. Button item = (Button) view.findViewById(R.id.button1);
  15.  
  16. popupWindow.setFocusable(true);
  17. popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
  18. popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
  19. popupWindow.setContentView(view);
  20.  
  21. return popupWindow;
  22. }

在名为my layout.xml的res / layout文件夹中创建此XML文件

  1. <LinearLayout
  2. android:layout_width="fill_parent"
  3. android:layout_height="wrap_content"
  4. android:orientation="horizontal" >
  5.  
  6. <Button
  7. android:id="@+id/button1"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="Window test" />
  11. </LinearLayout>

猜你在找的Android相关文章