4

你好,我必须创建一个PopUp菜单,我知道如何做到这一点。自定义弹出式菜单

这里是我的代码来创建默认弹出菜单..

popup_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/item" 
    android:showAsAction="ifRoom|withText" 
    android:title="item1" 
    android:visible="true"/> 
<item 
    android:id="@+id/item2" 
    android:showAsAction="ifRoom|withText" 
    android:title="item2" 
    android:visible="true"/> 
<item 
    android:id="@+id/item3" 
    android:showAsAction="ifRoom|withText" 
    android:title="item3" 
    android:visible="true"/> 

PopUpMenu_Activity.java

findViewById(R.id.btn_click).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      PopupMenu popupMenu = new PopupMenu(PopMenuActivity.this, view); 
      popupMenu.setOnMenuItemClickListener(PopMenuActivity.this); 
      popupMenu.inflate(R.menu.popup_menu); 
      popupMenu.show(); 
     } 
    }); 

public boolean onMenuItemClick(MenuItem item) { 

    switch (item.getItemId()) { 

    case R.id.item1: 
     Toast.makeText(this, "item1 clicked", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item2: 
     Toast.makeText(this, "item2 clicked", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item3: 
     Toast.makeText(this, "item3 clicked", Toast.LENGTH_SHORT).show(); 
     return true; 
    default: 
     return false; 
    } 

} 

我的问题是我该如何定制它?我想在半透明背景的PopUp菜单中添加自定义字体,如图所示。 请帮忙... !!!

enter image description here

+0

创建一个自定义对话框,而不是与列表视图和自定义列表项。 – 2014-12-04 10:27:15

+0

@MurtazaHussain:如果创建自定义对话框。我必须根据按钮点击来设置其位置。因为我不会在中心展示它。我想在按钮点击附近显示它。所以我宁愿喜欢弹出式菜单。 – iMDroid 2014-12-04 10:30:17

+0

比去这里http://www.androidhive.info/2013/11/android-working-with-action-bar/。 Point 18 – 2014-12-04 10:31:08

回答

8

您可以使用ListPopupWindow。您可以将自定义适配器提交到ListPopupWindow的对象,并将其外观自定义为getView

+0

谢谢这正是我一直在寻找的。 – iMDroid 2014-12-04 10:48:07

+0

不用客气 – Blackbelt 2014-12-04 10:49:28

2

可以使用android:actionViewClass属性菜单中的XML来定义你自己的自定义类

+0

ListPopupWindow更有用。不过谢谢你。 – iMDroid 2014-12-04 10:49:10

1

自定义android:spinnerDropDownItemStyle对于actionBarWidgetTheme更改它的文本外观。 另外不要忘记,下拉列表由您使用的适配器管理。那么如果你使用标准的(simple_dropdown_item_1line)就没有问题了。但是,如果您使用了像我这样的自定义(可以添加图标),请不要忘记在您的布局TextView中应用style="?attr/spinnerDropDownItemStyle"

最后的自定义样式是:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<style name="Theme.myapp" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/myapp_DropDownNav</item>   
    <item name="android:actionBarWidgetTheme">@style/myapp.actionBarWidgetTheme</item> 
</style> 

<style name="myapp.actionBarWidgetTheme" parent="@style/Theme."> 
    <item name="android:spinnerDropDownItemStyle">@style/myapp.Widget.DropDownItem.Spinner</item> 
</style> 

<style name="myapp_DropDownNav" parent="@style/Widget.Spinner.DropDown.ActionBar"> 
    <item name="background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_myapp</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_myapp</item> 
</style> 

<style name="myapp.Widget.DropDownItem.Spinner" parent="Widget.DropDownItem.Spinner"> 
    <item name="android:textAppearance">@style/myapp.TextAppearance.Widget.DropDownItem</item> 
</style> 

<style name="myapp.TextAppearance.Widget.DropDownItem" parent="TextAppearance.Widget.DropDownItem"> 
    <item name="android:textColor">@color/black</item> 
</style>