5

您好,我必须创建一个弹出菜单,我知道该怎么做。

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

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

}

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

在此处输入图像描述

4

3 回答 3

8

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

于 2014-12-04T10:29:06.027 回答
2

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

于 2014-12-04T10:27:51.780 回答
1

自定义android:spinnerDropDownItemStyleactionBarWidgetTheme更改其文本外观。也不要忘记下拉列表由您使用的适配器管理。然后,如果您使用标准(simple_dropdown_item_1line)的,则没有问题。但是,如果您使用像我这样的自定义项(以便能够添加图标),请不要忘记style="?attr/spinnerDropDownItemStyle"在您的布局中应用TextView

最终的自定义样式是:

<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>
于 2014-12-04T10:50:21.297 回答