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>