2014-05-08 19 views
12

Bir eylem çubuğunda bir eylem düğmesine tıkladığımda görünen bir PopupMenu var. Böyle özel bir yerleşimle benim PopupMenu içinde Menuıtem, istiyoruz:Android MenuItem Özel Mizanpajı

Bu PopupMenu xml olan

<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> 

düzen/menu_item_layout.xml:

menüsü/pop_menu.xml Etkinliğimi kodunda

<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> 

takip ediyor:

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(); 
} 

Ancak popupmenu görüntülendiğinde, öğe boştur. SetActionview() yöntemini kullanmak yanlış mıydı? Teşekkürler. Eğer bir menü kullanamazsınız özel düzenleri için

cevap

20

bir alternatif seçenek PopupWindow

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; 
} 

benim 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> 
+0

arasında adlandırılmış res/düzen klasöründe bu XML dosyası oluşturun olduğunu 20 + soru ve cevap, cevabınız en iyisidir. +500 veya +1000 kadar bağışta bulunmalısınız. –

+0

Açılır pencerede karanlık kenarlık var –

+0

'popupWindow.setBackgroundDrawable (null);' –